整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

为了哀悼英雄们,网站加一行css让整个网站快速变灰白



月4日凌晨零点起,腾讯游戏官方发布将把腾讯旗下所有娱乐游戏停服一天,以警示玩家深记抗疫战士的伟大付出和抗疫历史。

为了哀悼英雄们,不仅游戏被官方停服,新闻资讯的所有界面都被黑白色取代,我们为死难者哀悼时候,都会把网站调到灰色,如何快速实现呢,以下介绍两种方法(切图网用的第一种)

方法一 :

html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);-webkit-filter: grayscale(100%);}

方法二:

在引人的页面导入grayscale.js文件,例如

<script type="text/javascript" src="js/grayscale.js"></script>

然后

<script type="text/javascript">
window.onload = function(){
grayscale(document.html);
}
</script>

grayscale.js下载地址

https://gitee.com/qietuwang/codes/u08qiecfk3s5ngjxwzr9p12

本人在IETester工具下,测试IE7/8/9均支持,IE6不支持,XP系统真实IE6环境下没测试过!

采用webkit的Chrome支持(需要Chrome 18.0.976版本以上),其他采用webkit引擎的浏览器没测试过,只要采用最新webkit nightly版本均支持



.4日清明节大家可以看到很多很多网站包括主页和内容也都已经变成了灰色,比如百度、掘金、思否、CSDN 等等。

思否



CSDN


大家可以看到全站的内容都变成灰色了,包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢?

有人会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了,而且万一某个控件忘记加灰色样式了岂不是太突兀了。

其实,解决方案很简单,只需要几行代码就能搞定了。

实现

我们选择一个网站,比如 头条,打开浏览器开发者工具。



变灰效果

审查一下网页的源代码,选中html,然后我们只要将下面这行 CSS 样式,加入到页面指定节点,即可实现网页变灰的效果:

html {

-webkit-filter: grayscale(100%);

-moz-filter: grayscale(100%);

-ms-filter: grayscale(100%);

-o-filter: grayscale(100%);

filter: grayscale(100%);

filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);

}

-webkit-filter: grayscale(.95);我们将其取消,就能发现网站的颜色就能重新还原回来了。还原效果

还原效果

果然是这个样式在起作用,而且是全局的效果,因为它是作用在了 html 这个节点之上的。

因此我们可以确定,通过一个全局的 CSS 样式就能将整个网站变成灰色效果。

分析

那么这里我们就来详细了解一下这究竟是一个什么样的 CSS 样式。

这个样式名叫做 filter,搜下 MDN 的官方介绍,其链接为:https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter。

官方介绍内容如下:

filter CSS 属性将模糊或颜色偏移等图形效果应用于元素。滤镜通常用于调整图像,背景和边框的渲染。

CSS 标准里包含了一些已实现预定义效果的函数。你也可以参考一个 SVG 滤镜,通过一个 URL 链接到 SVG 滤镜元素 (SVG filter element[1])。

其实就是一个滤镜的意思。

官方有一个 Demo,可以看下效果,如图所示。

Demo

比如这里通过 filter 样式改变了图片、颜色、模糊、对比度等等信息。

其所有用法示例如下:

/* URL to SVG filter */

filter: url("filters.svg#filter-id");

/* <filter-function> values */

filter: blur(5px);

filter: brightness(0.4);

filter: contrast(200%);

filter: drop-shadow(16px 16px 20px blue);

filter: grayscale(50%);

filter: hue-rotate(90deg);

filter: invert(75%);

filter: opacity(25%);

filter: saturate(30%);

filter: sepia(60%);

/* Multiple filters */

filter: contrast(175%) brightness(3%);

/* Global values */

filter: inherit;

filter: initial;

filter: unset;


各个用法介绍大家可以参考官方的文档说明:https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter

比如这里如果我们可以使用 blur 设置高斯模糊,用法如下:

  • filter: grayscale(percent)


给图像设置高斯模糊。radius 一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起,所以值越大越模糊;如果没有设定值,则默认是 0;这个参数可设置绝对像素值,但不接受百分比值。

可以达成这样的效果:

效果

再说回刚才的灰色图像,这里其实就是设置了 grayscale,其用法如下:

filter: grayscale(percent)

filter: grayscale(percent)

将图像转换为灰度图像。值定义转换的比例。percent 值为 100% 则完全转为灰度图像,值为 0% 图像无变化。值在 0% 到 100% 之间,则是效果的线性乘子。若未设置,值默认是 0。另外除了传递百分比,还可以传递浮点数,效果是一样的。

如:

filter: grayscale(1)

filter: grayscale(100%)

都可以将节点转化为 100% 的灰度模式。

所以一切到这里就清楚了,如果我们想要把全站变成灰色,再考虑到各浏览器兼容写法,可以参考下 CSDN 的写法:

.gray {

-webkit-filter: grayscale(100%);

-moz-filter: grayscale(100%);

-ms-filter: grayscale(100%);

-o-filter: grayscale(100%);

filter: grayscale(100%);

filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);

}


这样想要变灰的节点只需要加上 gray 这个 class 就好了,比如加到 html 节点上就可以全站变灰了。

最后呢,看一下浏览器对 filter 这个样式的兼容性怎样,如图所示:

兼容性

这里我们看到,这里除了 IE,其他的 PC、手机端的浏览器都支持了,Firefox 的 PC、安卓端还单独对 SVG 图像加了支持,可以放心使用。

绍:

这是一款来自国外的分页样式,主要以灰色为主,红色为辅。经测试,兼容所有浏览器,但 IE6 png 背景图片未处理,请自行处理。如果喜欢这款分页就拿去使用吧。

演示地址:

https://www.361zy.com/demo/520/

下载地址:

https://cloud.06dn.com/s/RWZC3

解压码:

WpUiD9SO