关于CSS渲染:CSS是如何绘制颜色的
CSS中颜色基于RGB、CMYK、HSL等模型,RGBA与HSLA支持透明度(alpha通道),另有140种命名颜色、十六进制及currentColor,以及HSL/HSLA写法。渐变分线性与径向两种,可设多个色标、角度、重复及渐变中心,方向可自定义。形状绘制建议优先使用SVG,而非依赖CSS奇技淫巧,因SVG矢量图精确、可缩放、语义清晰且易于维护。
在CSS的世界里,颜色相关的属性几乎天天打交道,最常用的就是color和background-color。不过,颜色的背后其实有一套完整的原理支撑,搞清楚它们,写代码时心里会更踏实。
颜色的原理
颜色值有很多种表示方式,最常见的有RGB、CMYK、HSL,还有各种命名颜色。它们各自适用于不同场景,但核心目标都一样——精确描述一种颜色。
RGB 颜色
RGB 遵循光谱三原色理论:红、绿、蓝三种颜色的光可以混合出所有颜色。现代计算机里,每种颜色用0到255的数字表示,正好占一个字节,三种颜色一共三个字节。这也就是为什么RGB颜色在网页中那么直观——每个通道的值直接对应一个字节的存储。
CMYK 颜色
印刷行业用的是另一套三原色——品红、黄、青,再加上黑色(K),组成CMYK四元组。这是因为印刷靠油墨吸收光线,和屏幕发光的原理完全不同。所以做网页设计时,CMYK很少用到,但如果你做印刷品设计,就得熟悉它。
HSL 颜色
人类认知颜色时,更习惯用“色相”、“纯度”和“明度”来描述。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可以是方向,比如:
- to bottom
- to top
- to left
- to right
- to bottom left
- to bottom right
- to top left
- to top right
- 120deg
- 3.14rad
color-stop是一个颜色加一个区段,比如:
- rgba(255,0,0,0)
- orange
- yellow 10%
- green 20%
- lime 28px
放射性渐变需要一个中心点和若干个颜色:
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吧。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。
CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。
Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。
CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。
Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。



























