2026-05-17 22:01:54
在CSS中,使用filter: grayscale()可通过指定百分比或0-1数值将元素转为灰度图像,实现黑白效果或部分去色,语法及核心用法如下:
基本语法filter: grayscale(值);grayscale(100%)或grayscale(1):完全黑白,无色彩。
grayscale(0%)或grayscale(0):保持原色,无变化。
grayscale(50%)或grayscale(0.5):部分灰度,保留部分色彩。
图片黑白化将图片完全转为黑白:
img { filter: grayscale(100%);}鼠标悬停恢复原色添加过渡效果实现平滑切换:
img { filter: grayscale(100%); transition: filter 0.3s ease;}img:hover { filter: grayscale(0);}背景图部分去色对带背景图的容器应用70%灰度:
.card { background-image: url('photo.jpg'); filter: grayscale(70%);}filter: grayscale()适用于大多数块级和内联元素,尤其适合以下场景:
影响范围filter会作用于整个元素及其所有子元素。若需仅对背景图去色而不影响文字,可采用伪元素叠加方案:
.card { position: relative; width: 300px; height: 200px;}.card::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('photo.jpg'); filter: grayscale(70%); z-index: -1;}兼容性
现代浏览器(Chrome、Firefox、Safari、Edge)均支持。
旧版IE(如IE11及以下)不支持,需通过JavaScript或图片预处理替代。
性能影响过度使用filter可能导致渲染性能下降,尤其在动画或大量元素上需谨慎。
通过灵活运用filter: grayscale(),可高效实现丰富的视觉效果,同时保持代码简洁。