单位就是那个形容长度大小的东西。比如身高180cm(厘米),cm就是单位。

css 也不例外,要描述一个盒子的大小,就必须要用到单位。

css 单位根据其作用分为几大类:绝对单位相对单位视口单位角度单位时间单位网格单位频率单位分辨率单位

动态计算单位

认识单位之前,先认识几个动态计算函数,这东东的用法可强大了,后续再介绍。

  • calc()

    动态计算值(如width: calc(100% - 20px)

  • min()

    取最小值(如width: min(100%, 500px)

  • max()

    取最大值(如width: max(50%, 300px)

  • clamp()

    限制在范围(如font-size: clamp(1rem, 2.5vw, 2rem)

绝对单位

绝对单位的大小固定不变,与屏幕或设备无关,适合精确控制。例如一个长宽20像素的盒子,不管是在电脑上还是手机中,其大小就是20px。

需要注意系统缩放,分辨率2560x1440的笔记本电脑,如果缩放100%,其宽度还是2560像素;如果缩放150%,其宽度将变为2560÷1.5=1706.66。

同一个20像素,在缩放100%和缩放150%肉眼看到的大小是不一样的。

  • px(像素)

    最常用单位,1px = 1屏幕像素(非物理像素),适合固定尺寸元素(边框、图标)

  • cm(厘米)

    实际物理尺寸(1cm ≈ 37.8px),多用于打印样式

  • mm(毫米)

    同厘米,但更精细(1cm = 10mm)

  • in(英寸)

    1in = 2.54cm ≈ 96px

  • pt(点)

    印刷单位,1pt = 1/72英寸 ≈ 1.33px

  • pc(派卡)

    印刷单位,1pc = 12pt ≈ 16px

cmmminptpc 这些单位主要用于打印和其他需要精确尺寸的场合。

相对单位

相对单位的大小基于其他参考值(父元素、视口、字体大小等),适合响应式设计。

相对单位必须要找一个老六,老六的大小就是他的标准。

  • em

    相对于当前元素的字体大小,1em等于当前元素的字体大小。如果父元素有font-size属性,则子元素的em值是根据父元素的字体大小计算的。适用于创建可以相对于用户设定的字体大小缩放的布局。

  • rem

    相对于根元素(html元素)的字体大小,1rem等于根元素的字体大小。使用rem单位可以方便地进行响应式布局,同时避免em单位的嵌套导致的复杂计算问题。

  • %

    相对于父元素的尺寸,例如width: 50%表示元素宽度为父元素宽度的50%。

  • ch

    相对于当前元素的字体宽度,1ch = 当前字体中 "0" 字符的宽度,适合文本排版对齐。

  • ex

    相对于当前字体的x高度,1ex等于当前字体的x高度,使用较少。

视口单位

视口单位就是相对于浏览器窗口的宽度或高度,它与屏幕或设备无关,只与浏览器的可视窗口有关。

  • vw

    视口宽度的1%(50vw = 视口宽度的一半)。

  • vh

    视口高度的1%。

  • vmin

    取视口宽高中较小的1%(如竖屏手机中相当于vw)。

  • vmax

    取视口宽高中较大的1%。

  • svh/lvh

    区分短视口(svh)和完整视口(lvh),解决移动端浏览器地址栏遮挡问题。

角度单位

对头,就是那个三角函数中的角度,弧度。

  • deg(度数)

    表示角度,用于控制旋转和变形。

  • rad(弧度)

    表示弧度,用于控制旋转和变形。

  • grad(梯度)

    表示梯度,用于控制旋转和变形。

  • turn(圈数)

    表示旋转的圈数,用于控制旋转和变形。

时间单位

多用于控制持续时间,如动画。

  • s(秒)

    用于控制动画和过渡的时间长度。

  • ms(毫秒)

    用于控制动画和过渡的时间长度,是秒的千分之一。

网格单位

用于网格布局,就是 Grid。

  • fr

    表示网格容器剩余空间的一部分,用于网格布局。

频率单位

嘿...这个真不常见。

  • Hz(赫兹)

    表示频率,用于控制动画和音频的播放速度。

  • kHz(千赫兹)

    表示千赫兹,是赫兹的千倍,用于控制音频的播放速度。

分辨率单位

用于打印媒体查询,没见过~~

  • dpi(每英寸点数)

    表示每英寸的点数,用于控制图片大小和清晰度。

  • dpcm(每厘米点数)

    表示每厘米的点数,用于控制图片大小和清晰度。

  • dppx(每像素点数)

    表示每像素的点数,用于控制图片大小和清晰度。


常用单位

这么多单位,可不是每个都会使用的,一般常用的也就几个,如下:

  • px

    边框、固定尺寸图标、微小间距。

  • %

    容器宽度、高度(相对于父元素)。

  • rem

    字体大小、间距、布局尺寸。

  • vw/vh

    全屏布局、响应式字体/元素。

  • fr

    CSS Grid 布局中的弹性列宽。

  • calc()

    动态计算尺寸(如 calc(100% - 20px)。

  • clamp()

    流体响应式设计(如字体、容器尺寸)。

总结

  1. 核心掌握:px%remvw/vhfrcalc()min()max()clamp()

  2. 了解即可:emvmin/vmaxch

  3. 特殊场景备用:svh/lvhex

  4. 无需深究:cmmminptpc

Web前端入门第 24 问:CSS 单位的更多相关文章

  1. web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史

    秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...

  2. 好程序员web前端分享18个用CSS制作出来的东西

    好程序员web前端分享18个用CSS制作出来的东西,与流行的看法相反,CSS不仅仅是用来提供一个WEB页面的基本风格,以使它看起来更有吸引力.还有很多其他的事情,CSS也可以做的很好.由于它创建动画和 ...

  3. 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM

    好程序员web前端分享值得参考的css理论:OOCSS.SMACSS与BEM 最近在The Sass Way里看到了Modular CSS typography一文,发现文章在开头部分就提到了OOCS ...

  4. 进击的Python【第十三章】:Web前端基础之HTML与CSS样式

    进击的Python[第十四章]:Web前端基础之HTML与CSS样式 一.web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客 ...

  5. Android零基础入门第24节:自定义View简单使用

    原文:Android零基础入门第24节:自定义View简单使用 当我们开发中遇到Android原生的组件无法满足需求时,这时候就应该自定义View来满足这些特殊的组件需求. 一.概述 很多初入Andr ...

  6. web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】

    http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...

  7. web前端(7)—— 了解CSS样式,引入css样式的方式

    CSS 在前面大概的介绍了css,从本片博文开始,会详细的介绍它,在最开始介绍web前端时,打开百度首页,当时我提出了一个问题,为什么百度首页的输入框可以放在正中间,就是由于有css的控制,我们可以打 ...

  8. web前端学习(三)css学习笔记部分(8)-- SVN的介绍和应用、CSS动画效果、CSS3布局属性全接触

    15.SVN的介绍和应用 15.1.SVN的介绍和应用课程概要 将代码进行集中管理,有版本号的进行迭代,方便集体工作的build流程 15.2.SVN的介绍 SVN是Subversion的简称,是一个 ...

  9. Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...

  10. [转载]Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    http://brackets.io/ Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维 ...

随机推荐

  1. Ps cs4 -把GIF背景变透明-简单操作,还可以将视频转换GIF

    准备软件: 1.Ps cs4 2.QuickTime Player 7.74 开始: 1. 2.弹出文件选择框,但是发现不能选择GIF格式. 3.没关系,在文件名框输入*.*回车,就发现可以选择GIF ...

  2. springboot starter 原理解析及实践

    什么是springboot starter starter是springBoot的一个重要部分.通过starter,我们能够快速的引入一个功能,而无需额外的配置.同时starter一般还会给我提供预留 ...

  3. SpringBoot(八) - 统一数据返回,统一分页工具,统一异常处理 (生成随机数,正则校验)

    1.统一数据返回 使用逆向工程来进行测试,实体,mapper等省略: 1.1 直接使用 RequestResoult 1.1.1 RequestResoult 请求结果返回实体 //统一返回 实体 类 ...

  4. .net core2.2版本下载地址

    下载地址: https://download.visualstudio.microsoft.com/download/pr/279de74e-f7e3-426b-94d8-7f31d32a129c/e ...

  5. IOC操作Bean 管理(基于 xml 方式)

    1.什么是 Bean 管理(0)Bean 管理指的是两个操作(1)Spring 创建对象(2)Spirng 注入属性 2.Bean 管理操作有两种方式(1)基于 xml 配置文件方式实现(2)基于注解 ...

  6. win10 linux子系统的一些想法

    什么是linux子系统 具体的概念网上很多,作为个技术人简单粗暴来说就是微软脑子瓦特,突然爱上了linux, 可以在win10安装linux子系统 子系统不同于虚拟机,但是其优点是安装很快,对于新手和 ...

  7. 认识soui4js(第5篇):使用扩展控件

    无论内置控件多么丰富,也不可能满足用户所有需求.总有时候用户需要自己扩展控件. soui4js推荐使用C++来扩展控件,然后通过实现一个js模块来提供js使用. 扩展控件通常涉及到图形上下文的频繁交互 ...

  8. 一种把dump里连续的内存保存到文件的方法

    前几天调试一个崩溃,截到一个full dump文件,显示一个视频帧数据转换有问题.从调用栈可以看到完整的帧数据. 然后我就想把这个数据保存下来,再构造崩溃场景,VS没有提供把内存dump为文件的功能. ...

  9. 第4章 C#的高级特性

    第4章 C#的高级特性 4.1 委托 4.1.2 多播委托 对值为 null 的委托变量进行 + ​或 += ​操作,等价于为变量指定一个新值: SomeDelegate d = null; d += ...

  10. FLink18--全窗口聚合方式2 ProcessWindowApp

    一.依赖 二.代码 package net.xdclass.class11; import java.util.List; import java.util.stream.Collectors; im ...