发布于2026-07-22 阅读(0)
扫一扫,手机访问
在CSS的世界里,颜色相关的属性几乎天天打交道,最常用的就是color和background-color。不过,颜色的背后其实有一套完整的原理支撑,搞清楚它们,写代码时心里会更踏实。
颜色值有很多种表示方式,最常见的有RGB、CMYK、HSL,还有各种命名颜色。它们各自适用于不同场景,但核心目标都一样——精确描述一种颜色。
RGB 遵循光谱三原色理论:红、绿、蓝三种颜色的光可以混合出所有颜色。现代计算机里,每种颜色用0到255的数字表示,正好占一个字节,三种颜色一共三个字节。这也就是为什么RGB颜色在网页中那么直观——每个通道的值直接对应一个字节的存储。
印刷行业用的是另一套三原色——品红、黄、青,再加上黑色(K),组成CMYK四元组。这是因为印刷靠油墨吸收光线,和屏幕发光的原理完全不同。所以做网页设计时,CMYK很少用到,但如果你做印刷品设计,就得熟悉它。
人类认知颜色时,更习惯用“色相”、“纯度”和“明度”来描述。HSL模型正是为此而生:H(色相)代表颜色的本质,比如红色、蓝色;S(饱和度)代表颜色的纯度,从灰到鲜艳;L(明度)代表亮度,从黑到白。这种表示法特别适合调整颜色——比如把红色变暗一点,或者让蓝色更鲜艳,直接改HSL值就行,比在RGB里瞎猜舒服多了。
RGBA 是在RGB基础上加了Alpha通道,用来表示透明度。Alpha通道本质上是一个保留字,在CSS中专门用于透明度,所以叫RGBA,而不是RGBO(Opacity)。
CSS还内置了140种命名颜色,比如red、blue、transparent。这些名字虽然方便,但实际项目中很少用——因为颜色太有限,而且不同浏览器对某些名字的渲染可能有细微差异。不过快速调试时,随手写个red还是蛮爽的。
CSS中,background-image这类属性可以直接设置渐变。渐变分两种:线性渐变和放射性渐变。
线性渐变写法很简单:
linear-gradient(direction, color-stop1, color-stop2, ...);
direction可以是方向,比如:
color-stop是一个颜色加一个区段,比如:
放射性渐变需要一个中心点和若干个颜色:
radial-gradient(shape size at position, start-color, ..., last-color);
它的形状和尺寸参数可以灵活控制,从圆形到椭圆形,从中心到边角,都能做出漂亮的渐变效果。
CSS中很多属性会产生形状,比如border、box-shadow、border-radius。这些属性组合起来能玩出不少“黑魔法”,比如用border画三角形、用box-shadow做多层阴影。不过,这里有一个忠告:尽量让它们回归本职——border就是边框,阴影就是阴影,圆角就是圆角。所有需要复杂形状的场景,有一个更好的替代方案:datauri + SVG。SVG矢量图在表现力、可维护性和兼容性上都远超纯CSS技巧,而且不会因为浏览器差异而崩掉。所以,别把时间浪费在CSS形状的奇技淫巧上,老老实实用SVG吧。
下一篇:HTML中link标签属性详解
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8