CSS 中的单位

CSS 中的单位非常丰富,涵盖了长度、颜色、角度、时间、频率等,非常实用。一般来说,现在前端开发中比较重要的是长度单位中的 em 和 rem;而 vh、vw 等可以当做相对于屏幕长宽的百分比,效果优秀,可惜 兼容性不敢恭维,用途受限。

长度单位

绝对单位:

px:像素点数目;

mm cm in q:不常用的长度单位,表示毫米、厘米、英寸、1/4 毫米长度;

pt pc:不常用的长度单位,用于印刷业,表示码点、派卡。

相对单位:

%:百分比单位,相对于父级的比例;

如果父级的 height'auto',子元素的百分比高度无效;

需要注意的是,padding-bottompadding-top 如果用百分比单位,则依赖当前元素的宽度而不是高度。

em:几倍于当前节点字体大小 font-size,例如当前节点 font-size: 24px;,那么 1em=24px,那么 0.5em=12px;

rem:几倍于网页根节点 <html> 字体大小 font-size,如果用在移动端适配的场景,例如设计稿上手机全屏宽度为 750,而代码里写 750rem 即可对应手机全屏宽度,可以设置此 CSS 属性:html { font-size: calc(100vw / 750); }

ch ex:相对于当前字体表现的长度,ch 是数字 “0” 的宽度,ex 是字母 “x” 的高度;

vh vw:相对于当前视口大小,100vh=视口高度,100vw=视口宽度,注意 100vh 在 Safari 浏览器上会存在问题;

vmin vmax:前者值始终是视口宽/高中较少的值,后者值则是较大的值。

颜色单位

预定义颜色:如 "red""green" 等 CSS 内置颜色变量;

#000000 #000:16进制的一串颜色码;

rgb(0, 0, 0):RGB 三原色表示,三个值取值均为 0~255;

rgba(0, 0, 0, 0):比 RGB 多一个透明度参数,取值 0~1,表示从透明到完全不透明;

hsl(0, 0, 0):HSL 是用的色相、饱和度、亮度的颜色表示法;

hsla(0, 0, 0, 0):比 HSL 多一个透明度参数;

transparent:表示全透明黑色,等同于 rgba(0, 0, 0, 0)

currentColor:继承当前元素的 color 值,在实现文字 badge 的场合用来当做边框色或者背景色,可以自动适配文字的颜色,比较好用。

其他单位

角度:

数字:表示度数,0~360 取值范围,超出范围则有 -10 等同于 350;

deg grad rad:角度、梯度、弧度三种角度单位,一个 360 角度的圆,它可以分别用 400 梯度、2pi 弧度来表示;

turn:圈数,一个 360 度的圆是 1 turn。

时间:s ms:表示秒和毫秒,时间不能为负值。

频率:Hz kHz:赫兹和千赫兹。

分辨率:dpi dpcm dppx:代表单位长度像素点个数,分别表示英寸点数、厘米点数、像素点数。

CSS 中常用的语法

"字符串" '字符串':一串字符串,包含引号可用 "\" 来转义;

!important:提高样式的优先级;

@import:引入指定的资源,可以直接接字符串或者 url(...),注意编码名用双引号,结尾必须有分号

@media:媒体查询;

@font-face:嵌入 HTML 文档的字体,尽可能提供 .woff 和 .tff 和 .svg 和 .eot 四种格式;

@page:打印时的设置;

@keyframes:定义一个动画;

@supports( ):检测是否支持某 CSS。

函数:

calc( ):计算属性,支持加减乘除四种运算,注意运算符两侧必须用空格

url( ):url 引用符号,参数是一个表示资源 url 的字符串,建议写引号;

attr(name):获取元素的属性值,其中的参数 name 表示属性名称,name 不要加引号;

counter( ) counters( ):计数器和重复多次的计数器。