不推荐大量使用 opacity,因其无差别作用于元素及所有子元素,破坏可读性与交互体验;它触发层叠上下文,使子元素无法通过设置 opacity: 1 恢复不透明;还降低对比度、影响可访问性;建议用 RGBA/HSLA、mask 或 backdrop-filter 等更精准方案。
不推荐大量使用 opacity,核心原因是它会**无差别地作用于整个元素及其所有子元素**,导致
内部内容(文字、子容器、图标等)也一并变透明,丧失独立控制能力,容易破坏可读性与交互体验。
opacity 是一个**层叠上下文(stacking context)触发属性**,设置后不仅当前元素变透明,其所有后代元素的透明度都会被统一乘以该值——无法单独恢复或覆盖。比如:
即使给子元素设置 opacity: 1,它依然会显示为父级 opacity: 0.5 × 自身 1 = 0.5 的透明度。
需要局部透明效果时,优先考虑:
opacity: 0.3;opacity 触发 GPU 合成(尤其是动画中),频繁变化可能引起重绘重排。虽然现代浏览器优化较好,但滥用仍可能在低端设备上出现卡顿,尤其叠加多个透明层时。