插件窝 干货文章 如何用CSS实现网站整体灰度化同时保持图片颜色不变?

如何用CSS实现网站整体灰度化同时保持图片颜色不变?

灰度 filter grayscale webkit 494    来源:    2025-03-22

要实现网站整体灰度化同时保持图片颜色不变,可以使用CSS的filter属性。具体来说,可以通过将整个页面的颜色设置为灰度,然后单独为图片元素设置filter: none;来保持图片的原始颜色。

以下是实现这一效果的CSS代码:

/* 将整个页面设置为灰度 */
html {
    filter: grayscale(100%);
    -webkit-filter: grayscale(100%); /* 兼容WebKit浏览器 */
}

/* 保持图片颜色不变 */
img {
    filter: none;
    -webkit-filter: none; /* 兼容WebKit浏览器 */
}

解释:

  1. filter: grayscale(100%);:将整个页面的颜色设置为100%灰度。grayscale(100%)表示完全灰度化,grayscale(0%)表示无灰度化。
  2. -webkit-filter: grayscale(100%);:为了兼容WebKit内核的浏览器(如Safari),添加了带有-webkit-前缀的样式。
  3. img { filter: none; }:为图片元素设置filter: none;,使其不受灰度化影响,保持原始颜色。

注意事项:

  • 这种方法适用于大多数现代浏览器,但在一些旧版浏览器中可能不支持filter属性。
  • 如果你只想对特定区域进行灰度化,而不是整个页面,可以将filter: grayscale(100%);应用到特定的容器元素上,而不是html标签。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>灰度化页面</title>
    <style>
        html {
            filter: grayscale(100%);
            -webkit-filter: grayscale(100%);
        }

        img {
            filter: none;
            -webkit-filter: none;
        }
    </style>
</head>
<body>
    <h1>灰度化页面</h1>
    <p>这是一个灰度化的页面,但图片颜色保持不变。</p>
    <img src="your-image.jpg" alt="示例图片">
</body>
</html>

在这个示例中,页面的所有内容(除了图片)都会显示为灰度,而图片会保持其原始颜色。