颜色与背景
color 设置前景(多为文字)色;background-* 设置元素背景(颜色、图像、渐变)。二者共同决定对比度与视觉层次,直接影响 无障碍 阅读体验。排版中的文本颜色用法见 排版与文本。
颜色(color 与 <color> 类型)
常用表示法
| 方式 | 示例 | 说明 |
|---|---|---|
| 关键字 | red, transparent | transparent 全透明 |
| 十六进制 | #fff, #ff0000, #ff000080 | 3/6/8 位(8 位含 alpha) |
rgb() / rgba() | rgb(255 0 0), rgba(0,0,0,0.5) | 现代推荐空格语法 + / alpha:rgb(0 0 0 / 50%) |
hsl() / hsla() | hsl(120 100% 50%) | 调亮度直观;支持 / alpha |
oklch() / oklab() | oklch(60% 0.15 250) | 感知均匀,新设计常用 |
color-mix() | color-mix(in srgb, red 50%, blue) | 混色 |
light-dark() | light-dark(#111, #eee) | 在 color-scheme: light dark 下按浅色/深色方案取值 |
currentColor | — | 取当前元素 color 计算值,常用于 border-color |
h1 {
color: #333;
}
p {
color: rgb(0 0 0 / 0.8);
}
.box {
color: blue;
border: 2px solid currentColor;
}
rgba()/hsla()仍广泛支持;新代码可优先rgb()/hsl()的 斜杠 alpha 写法。
背景属性
分项属性
| 属性 | 作用 |
|---|---|
background-color | 背景色,默认 transparent |
background-image | url()、渐变(linear-gradient 等) |
background-repeat | repeat / no-repeat / repeat-x / repeat-y |
background-position | 如 center、top left、50% 50% |
background-size | cover / contain / 具体尺寸 |
background-attachment | scroll(默认)/ fixed(相对视口;移动端可能有性能问题) |
background-origin | 定位参照盒:padding-box(默认)等 |
background-clip | 背景绘制到何处;border-box(默认)、padding-box、content-box;text 可做文字裁剪(常需 -webkit-background-clip: text) |
background-size
cover:保持比例铺满,可能裁剪。contain:完整显示图片,可能留白。- 双值:如
100% auto。
简写 background
多层背景用逗号分隔;单层常见写法:
.hero {
background: #f0f0f0 url("bg.jpg") no-repeat center / cover;
}
position 与 size 用 / 连接,如 center / cover。background-color 只能写在最后一层(规范要求)。
透明度
| 方式 | 作用范围 |
|---|---|
opacity: 0.5 | 整个元素(含子元素)变透明,且会创建层叠上下文 |
| 带 alpha 的颜色 | 仅该层背景/文字色透明,子元素不受影响 |
.panel {
background-color: rgb(255 0 0 / 0.5);
}
渐变(属于 background-image)
线性渐变
.gradient {
background: linear-gradient(to right, red, blue);
background: linear-gradient(45deg, red, orange, yellow);
}
径向渐变
.radial {
background: radial-gradient(circle at center, white, black);
}
可用 conic-gradient 做锥形渐变。渐变由浏览器实时绘制,通常比大图更省带宽。
配色方案(color-scheme)
在根或容器上声明 color-scheme: light dark,告知用户代理页面支持浅色与深色;表单控件、滚动条等会使用对应默认样式。与 light-dark()、prefers-color-scheme 媒体查询可组合实现主题切换。
:root {
color-scheme: light dark;
background: light-dark(#fff, #121212);
color: light-dark(#222, #f0f0f0);
}
可访问性与性能
对比度(WCAG 2)
- 正文文字与背景:对比度建议 ≥ 4.5:1。
- 大号字(约 ≥ 18px 常规或 ≥ 14px 粗体):≥ 3:1。
- 不要仅靠颜色传达状态(需配合图标、文案)。
实践建议
- 纯色背景用
background-color,勿用 1×1 图片。 - 有背景图时仍设 fallback 背景色,图片失败时文字可读。
- 响应式图:可用
image-set()按分辨率切换,或与<picture>配合。 - 移动端大背景
fixed慎用,易卡顿。
.card {
color: #333;
background-color: #f4f4f4;
background-image: url("pattern.png");
background-position: center top;
background-size: contain;
background-repeat: no-repeat;
border: 1px solid rgb(0 0 0 / 0.1);
}
总结
- 颜色:掌握 hex、
rgb()/hsl()与 alpha、currentColor;新特性了解oklch、color-mix。 - 背景:分清
cover/contain、简写中/的含义、clip/origin。 - 透明:优先带 alpha 的颜色,慎用整元素
opacity。 - 无障碍:保证对比度,背景图加 fallback 色。
参考文献
以下链接在编写时均可正常访问:
| 资料 | 说明 |
|---|---|
MDN:<color> | 颜色语法与 oklch 等 |
| MDN:color | 前景色属性 |
| MDN:background | 背景简写 |
| MDN:linear-gradient() | 线性渐变 |
| MDN:opacity | 整元素透明度 |
| W3C:CSS Color Module Level 4 | 颜色规范(英文) |
| W3C:CSS Backgrounds and Borders Level 3 | 背景规范(英文) |
| WCAG 2.1:Contrast (Minimum) | 对比度要求 |
| MDN:color-scheme | 浅色/深色方案 |
| MDN:light-dark() | 双主题颜色函数(英文) |
相关文章
Less 基础与核心语法
Less 是 JavaScript 实现的 CSS 预处理器,在 CSS 语法上扩展变量(@)、嵌套、混合、运算与函数,编译为普通 CSS 后由浏览器加载;本文覆盖安装、CLI、构建工具集成与全部核心语法。
Sass 简介与安装
Sass(Syntactically Awesome Style Sheets)是 CSS 预处理器,在 CSS 语法上增加变量、嵌套、混合、模块、控制指令等;有 SCSS 与缩进语法两种源码语法,官方实现为 Dart Sass。
模块与控制流:@use、内置函数、@if/@for/@each
Dart Sass 推荐用 @use/@forward 替代已弃用的 @import;内置 sass:* 模块提供颜色、字符串、列表、Map、数学等函数;@if/@for/@each/@while 用于条件与循环生成样式。
复用机制:Mixin 与继承
Mixin(@mixin/@include)支持参数与 @content,适合动态样式;@extend 与 %placeholder 通过合并选择器复用完全相同的静态样式,减少 CSS 体积。
语法基础:变量、嵌套与运算
Sass 语法基础:$ 变量与插值、选择器嵌套与 & 父选择器引用、数学/颜色/字符串运算、三种注释语法及与原生 CSS 嵌套的关系。
工程化集成与扩展
Less 可集成到 Vite、Webpack、Vue CLI 等工具链,实现编译、全局变量注入与路径处理。
Series
css
2 / 20