CSS 透明度
你会用纯色、照片和渐变了。有时希望整个元素看起来更柔和——淡一层、禁用按钮、退后的卡片。这就是 opacity 的工作:整块盒子看起来有多不透明或多通透。
opacity 做什么?
opacity 属性设定元素有多不透明。取值从 1(完全实心,多数元素的默认)到 0(完全看不见)。像 0.5 这样的小数在中间。重要:opacity 作用于元素及其内部的一切——文字、边框、背景和子盒子一起变淡。
Opacity 与颜色 alpha
这两个概念很容易搞混。分开记。
📊 Opacity 与颜色 alpha
| 工具 | 变淡什么 | 典型用途 |
|---|---|---|
opacity |
整个元素(及其子元素) | 柔和叠层、禁用外观、以后的淡入淡出 |
rgba() / hsla() 的 alpha |
仅该颜色层 | 透明背景上叠实心文字 |
关键字 transparent |
完全透明的颜色值 | 隐藏边框色又不删属性 |
visibility: hidden |
视觉隐藏但保留布局 | 另一工具——此处不深讲 |
完全实心与半淡
先在同一卡片设计上比较 1 与 0.5。
实心 vs 一半 opacity
css.card-solid {
opacity: 1;
background-color: #ccfbf1;
color: #042f2e;
padding: 1rem;
}
.card-soft {
opacity: 0.5;
background-color: #ccfbf1;
color: #042f2e;
padding: 1rem;
}
你该看到什么
在 .card-soft 上,背景和文字都像被冲淡。Opacity 不会放过字母。
子元素随父元素一起淡
若父元素是 opacity: 0.4,嵌套的标题和按钮不能靠自己设 opacity: 1「逃出去」。它们已经画在变淡的层里。
父级 opacity 冲淡子元素
css.overlay {
opacity: 0.4;
background-color: #0f172a;
color: white;
padding: 1rem;
}
.overlay strong {
opacity: 1; /* 在已淡的父级内无法恢复满强度 */
}
设计含义
要磨砂面板却要清晰文字?用 rgba 淡化背景色,不要用 opacity 淡化整个元素。
只要填充变软时优先 rgba
这里面板背景半透明,文字仍是满强度。
柔和填充、实心文字
css.panel {
background-color: rgba(15, 118, 110, 0.25);
color: #042f2e; /* 满强度文字 */
padding: 1rem;
}
弱化 UI 的习惯
常见做法:次要操作或禁用控件略降 opacity,让它们更安静——但仍保持可读对比度。
弱化的次要按钮
css.btn-secondary {
opacity: 0.75;
background-color: #e2e8f0;
color: #0f172a;
border: none;
padding: 0.5rem 1rem;
}
零是看不见——空间可能还在
opacity: 0 让元素看不见,但仍可能占布局空间,并按上下文接收指针事件。要从布局去掉,那是别的工具(display: none),不只是 opacity。
看不见但仍在流里
css.ghost {
opacity: 0;
}
自己动手
- 两张同色卡片;一张
opacity: 1,一张opacity: 0.5。 - 在
opacity: 0.4的父级里放一行加粗——确认无法把子元素完全「还原」。 - 用
background-color: rgba(…, 0.25)加实心color重建柔和效果。 - 次要按钮设
opacity: 0.75并检查可读性。 - 可选:给盒子设
opacity: 0,观察布局里仍留下的空隙。
常见错误
- 只想透明背景却给父级加
opacity - 指望子元素
opacity: 1在淡父级里仍完全实心 - 用
opacity: 0代替从布局移除 - opacity 降到文字对比度失败
- 把
transparent关键字当成opacity属性
小结
opacity设定整个元素有多透明(0–1)- 子元素随父一起淡——从内部无法完全逃脱
- 要柔和背景加实心文字,优先
rgba/hsla的 alpha - 低 opacity 可弱化 UI;留意无障碍
- 看不见(
0)不等于移出布局 - 练卡片对与 rgba 重建,直到差别一目了然
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部