昨天打开各个网站,发现网页都变成灰色了。今年国家经历了非常惨痛的时刻,有很多烈士英雄保卫人民的安危遇难,昨天全国下降半旗,北京时间 10 点全国默哀三分钟,来致敬英雄们。为了深切哀悼在抗击新冠肺炎斗争中的牺牲烈士和逝世同胞,4月4日0点起,全国多家网站和移动端,比如百度、优酷、爱奇艺、哔哩哔哩、抖音、快手、斗鱼和CSDN等平台给出公告称:2020年4月4日全国性哀悼活动期间,停止今天一切公共娱乐活动。
随便打开这些任何一个网站,全站的内容都变成了灰色,包括按钮、图片等等。相新闻网站登陆信这时候从事程序开发的粉丝可能会好奇这是怎么做到的呢?
其实解决方案很简单,只需要几行代码就能搞定了。从事前端开发的朋友会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。如下图,有一个灰色样式:[filter: grayscale(100%);],也许就是这一个样式控制着整个网页显示效果。
现在试着关掉这个样式,会发现整个csdn页面恢复了往常的红色主题,包括网站logo、图片和按钮都恢复了。
总结上面的实验效果,果然是这个样式在起作用,而且是全局的效果,因为它是作用在了 html 这个节点之上的。只要修改这部分CSS代码:
html { webkit-filter: grayscale(100%); filter: grayscale(100%);}
当然这种修改CSS的方式还有很多,我们可以在Mozilla发布的样式效果测试平台上看看 filter 这种不同层叠样式效果。
平台地址:
通过这几个用抖音运营方法力可见通过 filter 样式改变了图片、颜色、模糊、对比度等等信息。官网介绍了一些语法:
/* URL to SVG filter */
filter: url("filters.svg#filter-id");
/* <filter-function> value电商运营学多久s */
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;
设置一种函数,方法如下:
filter: <filter-function> [<filter-function>]* | none
如果对层叠样式感兴趣的朋友可以阅览下官网的说明文档:
除了这些开发样式调整的方法以外,还可以走系统架构角度解决网页的显示问题,通常很多大型网站都用上了反向代理nginx服务器,所有网站访问,都要通过nginx代理去访问到网页内容。
既然这样,统一在nginx服务器上做一些配置也是可行的,之前某大神的博客说“在Nginx负载均衡服务器上,利用sub_filter指令在输出的HTML中增加一行如下代码:
<style type="text/css">html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }</style>
nginx配置修改效果如下:
|