属性与值是CSS的核心。
上次讲到了CSS属性的分类(《CSS 属性分类》),这篇文章讲一下CSS值的分类,以及值分类下面的单位的区别。
CSS值的数据类型分为数值类型、标识符类型、字符串类型、变量类型、函数类型五种。
数值类型
数值类型又分为不带单位的数值和带单位的数值两类。
不带单位的数值
比如opacity、z-index、百分比长度等
带单位的数值
带单位的数值指的就是长度,它分为绝对长度单位和相对长度单位
绝对长度单位
cm:厘米(1cm = 37.8px)mm:毫米Q:四分之一毫米in:英寸(1in = 96px)pc:派卡pt:点px:像素
相对长度单位
em:在 font-size 中使用是相对于父元素的字体大小,在其他属性中使用是相对于自身的字体大小,如 widthex:字符“x”的高度ch:数字“0”的宽度rem:根元素的字体大小lh:元素的行高rlh:根元素的行高vw:视口宽度的 1%vh:视口高度的 1%vmin: 视口较小尺寸的 1%vmax:视口大尺寸的 1%vb:在根元素的块向上,初始包含块的尺寸的 1%vi:在根元素的行向上,初始包含块的尺寸的 1%svw:视口较小尺寸的宽度的 1%svh:视口较小尺寸的高度的 1%lvw:视口大尺寸的宽度的 1%lvh:视口大尺寸的高度的 1%dvw:动态视口的宽度的 1%dvh:动态视口的高度的 1%
标识符类型
CSS中的标识符有很多,比如下面这些:
颜色值关键字:red、green、blue、black、white、(#)十六进制代码等字体关键字:serif、sans-serif、monospace、cursive等文本对齐关键字:left、right、center、justify等背景属性关键字:transparent、repeat、no-repeat、cover等边框属性关键字:solid、dashed、dotted、double等定位属性关键字:absolute、relative、fixed等显示属性关键字:block、inline、inline-block、none等清除浮动关键字:clear、both等......
字符串类型
CSS中这种类型的值很少,常见的比如font-family的属性值、content的属性值等
变量类型
CSS允许自定义变量,也算一种类型,使用CSS变量需要注意以下几点:
- 声明变量的时候,变量名前面要加两根连词线(--)
- 变量值只能用作属性值,不能用作属性名
- var()函数用于读取变量
- 同一个 CSS 变量,可以在多个选择器内声明,读取的时候,优先级最高的声明生效,这与 CSS 的"层叠"规则是一致的,且变量的作用域就是它所在的选择器的有效范围
- 全局的变量通常放在根元素:root里面,确保任何选择器都可以读取它们
函数类型
abs():绝对值exp():指数型函数,以数值为参数,返回数学常数 e 的指定次方hypot():指数型函数,返回其参数平方和的平方根log():指数型函数,返回某数的对数pow():指数型函数,返回底数的某数次方的值sqrt():指数型函数,返回某数的平方根mod():返回第一个参数除以第二个参数后剩下的模数,类似于JavaScript的余数运算符(%)rem():返回第一个参数除以第二个参数后剩下的余数,类似于JavaScript的余数运算符(%)round():根据选定的舍入策略返回舍入后的数字sin():介于 -1 和 1 之间的数的正弦值acos():介于 -1 和 1 之间的数的反余弦值asin():介于 -1 和 1 之间的数的反正弦值cos():介于 -1 和 1 之间的数的余弦值tan():介于 −infinity 和 infinity 之间的数的正切值atan():介于 -∞ 和 +∞ 之间的数的反正切值atan2():介于 -infinity 和 infinity 之间的两值的反正切值calc():允许在声明 CSS 属性值时执行一些计算clamp():把一个值限制在一个上限和下限之间,当这个值超过最小值和最大值的范围时,在最小值和最大值之间选择一个值使用sign():如果参数的数值为负,则返回-1,如果参数的数值为正,则返回+1,如果参数的数值为0+,则返回0+,如果参数的数值为0-,则返回0-symbols():如果参数的数值为负,则返回-1,如果参数的数值为正,则返回+1,如果参数的数值为0+,则返回0+,如果参数的数值为0-,则返回0-max():可以从一个逗号分隔的表达式列表中选择最大的值作为属性的值min():可以从一个逗号分隔的表达式列表中选择最小的值作为属性的值fit-content():将给定大小夹紧为可用大小,根据公式 min(maximum size, max(minimum size, argument))minmax():定义了一个长宽范围的闭区间,它与CSS 网格布局一起使用attr():用来获取选择到的元素的某一 HTML 属性值counter():返回一个代表计数器的当前值的字符串counters():返回表示指定计数器当前值的连接字符串cross-fade():用于以定义的透明度混合两个或多个图像element():定义了一个从任意的 HTML 元素中生成的图像<image>值env():将用户代理定义的环境变量值插入你的 CSS 中rgb():用于设置颜色,接受三个参数,分别代表红、绿、蓝三原色的值,取值范围是0-255rgba():用于设置颜色,接受四个参数,前三个参数与rgb()相同,第四个参数是透明度,取值范围是0-1hsl():用于设置颜色,接受三个参数,分别代表色相、饱和度和亮度,取值范围是0-360、0%-100%、0%-100%hsla():用于设置颜色,接受四个参数,前三个参数与hsl()相同,第四个参数是透明度,取值范围是0-1linear-gradient():用于创建线性渐变的背景色或背景图片radial-gradient():用于创建径向渐变的背景色或背景图片path():接受一个SVG路径字符串,在CSS形状和CSS运动路径中使用,用于绘制形状ray():定义动画元素可以遵循的偏移路径线段repeat():表示轨道列表的重复片段,横向和纵向都重复repeat-x():相较于repeat(),repeat-x()表示横向重复,纵向不重复rotate():用于旋转元素,可以设置旋转角度scale():用于缩放元素的大小,可以设置水平和垂直方向的缩放比例skew():用于扭曲元素,可以设置水平和垂直方向的扭曲角度translate():用于移动元素,可以设置水平和垂直方向的偏移量url():指向一个资源var():可以插入一个自定义属性(CSS 变量)的值,用来代替非自定义属性中值的任何部分
总结
数值类型、标识符类型是CSS属性值最常用的类型,变量类型、函数类型是CSS属性值功能最强的类型。
JavaScript可以读取CSS变量,所以,CSS 变量提供了 JavaScript 与 CSS 通信的一种途径。