2023-05-14 20:08:18
在 CSS 中,可通过 filter 属性结合多种滤镜函数调整元素颜色表现,实现亮度、对比度、饱和度、色调等视觉效果的优化。以下是具体方法及示例:
1. 核心滤镜函数brightness(value):调整元素明暗
value > 1:变亮(如 brightness(1.5))
value < 1:变暗(如 brightness(50%))
value = 0:完全黑色
.element { filter: brightness(0.7); } /* 降低亮度 */contrast(value):控制颜色对比度
value = 1:原始对比度
value > 1:增强对比(如 contrast(200%),颜色更鲜明)
value < 1:降低对比(如 contrast(50%),效果灰蒙蒙)
.element { filter: contrast(150%); } /* 提高对比度 */saturate(value):调整颜色饱和度
value = 0:完全去色(灰度图,如 saturate(0))
value > 1:饱和度增强(如 saturate(2),颜色更鲜艳)
.element { filter: saturate(0.5); } /* 降低饱和度 */hue-rotate(angle):旋转色相改变色调
单位为 deg(度),360deg 为完整一圈。
示例:hue-rotate(90deg) 使颜色偏绿/黄,hue-rotate(180deg) 反转色调。
.element { filter: hue-rotate(45deg); } /* 色调偏红/橙 */invert(value):反转所有颜色
value = 1:完全反转(如黑变白、红变青,invert(100%))
value = 0:无变化
.element { filter: invert(80%); } /* 部分颜色反转 */通过组合多个滤镜函数,可实现复杂调色效果。顺序不影响最终结果,浏览器会合并处理。
.element { filter: hue-rotate(180deg) saturate(2) brightness(0.9); /* 色调反转+饱和度增强+亮度降低 */}.text { filter: contrast(120%) brightness(70%); /* 提高对比度+降低亮度 */}3. 适用场景与注意事项适用场景:
图像、图标、文字、背景的视觉效果优化(如夜间模式、复古风格)。
快速实现调色,无需额外图片或 JavaScript。
注意事项:
性能影响:滤镜会触发 GPU 加速,但频繁使用(如动画)可能导致卡顿。
作用范围:影响整个元素及其子元素,可能覆盖子元素的独立样式。
局限性:
不适用于精确颜色替换(如 SVG 单色填充需用 fill 属性)。
过度使用可能导致颜色失真或可读性下降。
通过合理选择和组合滤镜函数,可高效实现丰富的视觉效果,但需权衡性能与实际需求。