函数
CSS 里内置了许多函数,可以见 CSS 功能符号 - MDN ,但是你不能自己写函数。
函数选择器
这样的选择器有 :is()
和 :not()
。
.post :is(h1, h2, h3) {
line-height: 1.2;
}
自定义属性和 var()
:root {
--base-color: #ff00ff;
}
.my-element {
background: var(--base-color);
}
一个自定义属性应当以 --
开头,这是为了防止与底层的属性名冲突,发生覆盖。
var()
可以接受第二个参数,当第一个参数失败时会使用第二个参数:
.my-element {
background: var(--base-color, hotpink);
}
获取值的函数
除了 var()
,还有一些能获取值的函数:
attr()
获取元素的属性a::after {
content: attr(href);
}url()
可以获取图片、字体、内容等.my-element {
background-image: url('/path/to/image.jpg');
}
颜色函数
rgb()
&rgba()
hsl()
&hsla()
lab()
&lch()
数学表达式
calc()
计算数值,支持嵌套.my-element {
width: calc(calc(10% + 2rem) * 2);
}min()
和max()
.my-element {
width: min(20vw, 30rem);
height: max(20vh, 20rem);
}clamp(min, ideal, max)
h1 {
font-size: clamp(2rem, 1rem + 3vw, 3rem);
}
形状
对于 clip-path
offset-path
shape-outside
函数,可以用 circle()
ellipse()
inset()
等形状函数。复杂一点也可以用 polygon()
函数。
.circle {
clip-path: circle(50%);
}
.polygon {
clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 75% 75%, 75% 100%, 50% 75%, 0% 75%);
}
还有个 path()
函数,用来接收 SVG 规则。
转换
一般这类函数应用在 transform
属性上。
旋转 Rotate
有 rotateX()
rotateY()
rotateZ()
函数,表示在 X、Y、Z 轴上旋转。接受一个角度值。
还有 rotate3d()
,接受四个参数:x
y
z
矢量和旋转角度:
.my-element {
transform: rotate3d(1, 1, 1, 10deg);
}
缩放 Scale
有 scaleX()
、scaleY()
、scaleZ()
缩放函数。同时也有个 scale3d()
函数。
转移 Translate
有 translate()
转移函数,可以传入 x 值,或者 x 和 y 值。
还有 translateX()
translateY()
translateZ()
。同时也有个 translate3d()
函数。
倾斜 Skew
有 skewX()
skewY()
倾斜函数。也可以用 skew(X)
skew(X, Y)
简写代替。
除了 transform
还有 perspective
属性,用来处理透视效果。
除了以上介绍的,还有动画、渐变颜色、滤镜相关的函数。