转自进击的Coder,作者崔庆才

今天是 2020 年 4 月 4 日,星期六,清明节。

我们的国家经历了非常惨痛的时刻,很多英雄在救助他人的路上倒下,更有很多烈士英雄保卫人民的安危遇难,今天全国下降半旗,北京时间 10 点全国默哀三分钟,来致敬英雄们。同时今天一切公共娱乐活动也都会停止,包括直播、综艺、影视、游戏等等。

我也在这里也向全国抗击新冠肺炎疫情斗争牺牲的烈士和逝世的同胞表达深切的哀悼,向所有在抗战在疫情前线的工作和医护人员致敬。我们每一个人的平安面前,都是英雄的人墙。

网站变灰

今天大家可以看到很多很多网站包括主页和内容也都已经变成了灰色,比如百度、B 站、爱奇艺、CSDN 等等。

CSDN

爱奇艺

百度

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

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

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

实现

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

审查一下网页的源代码,我们可以发现在 html 的这个地方多了一个疑似的 class,叫做 gray,gray 中文即灰色。

变灰效果

可以看到,我们只要将下面这行 CSS 样式,加入到页面指定节点,即可实现网页变灰的效果:

-webkit-filter: grayscale(.95);

其完整内容为:

html.gray {-webkit-filter: grayscale(.95);
}

我们将其取消,就能发现网站的颜色就能重新还原回来了。

还原效果

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

另外看看 CSDN,它也是用的这个 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);
}

这个实现看起来兼容性会更好一些。

因此我们可以确定,通过一个全局的 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: blur(radius)

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

可以达成这样的效果:

效果

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

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 图像加了支持,可以放心使用。

总结

本篇文章简单介绍了一下今天观察到的网站变灰的实现,也学习了 filter 的更详细的用法,希望有帮助。

References

[1] SVG filter element: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/filter

最后,跟大家分享今天看到的,对我触动颇深的一段话:

“如果有后人来撰写今天的历史,那他们将发现没有任何文字词藻能够写尽这场灾难的残酷,也没有任何语言修辞能描述人类为生存所付出的艰苦卓绝的努力。

我们将怀揣火种走过黑暗长夜,跨过战友的遗骸,踏过荆棘和深渊,最终在累累尸骨上重新点燃种族延续的火炬。

我知道你们并不需要历史来记载功勋,也无谓那些空虚华美的称颂。

只要山川河流、千万英灵,见证过我们前仆后继的跋涉和永不放弃的努力。”

—— 敬平凡的人类

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 888 领取,更多内容陆续奉上。

技术大揭秘:百度、淘宝、QQ那些官网如何就只用一行代码实现网页变灰效果?...相关推荐

  1. 仿淘宝电商官网静态页面(HTML+CSS+JS)+ 常见布局解析,学会如果做是关键!

    仿淘宝电商官网静态页面 作为一个前端开发,布局+样式已经成为了必备的技能,你做得好是应该的,做的不好可以原谅,但当你意识到不足时,补足它 这是我刚"入坑"的时候写的Demo,因为当 ...

  2. HTML5期末大作业:网站——响应式网络游戏官网HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计 ~大学生个人网站作业模板 ~简单个人网页

    HTML5期末大作业:网站--响应式网络游戏官网HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计 ~大学生个人网站作业模板 ~简单个人网页 ...

  3. npm 设置淘宝源还原官网源

    npm 设置淘宝源 // npm 设置淘宝源npm config set registry https://registry.npm.taobao.org npm 还原官网源地址 npm 还原官网源n ...

  4. 抖音 Android 基础技术大揭秘!

    从2016年9月的1.0版本上线至今,抖音在6年间实现了从零开始的快速增长.这短短6年伴随的是移动开发技术与云计算.机器学习等技术融合带来的技术落地新形式,也遇到了直播.连麦等新的用户需求所带来的产品 ...

  5. 【高德地图API】汇润做爱地图技术大揭秘

    原文:[高德地图API]汇润做爱地图技术大揭秘 昨日收到了高德地图微信公众号的消息推送,说有[一大波免费情趣用品正在袭来],点进去看了一眼,说一个电商公司(估计是卖情趣用品的)用高德云图制作了一张可以 ...

  6. 抢红包技术大揭秘:如何使用Redis轻松实现抢红包

    黑马程序员视频库 播妞QQ号:3077485083 传智播客旗下互联网资讯.学习资源免费分享平台 世上最倒霉的事情,莫过于 ... 吃火锅不管坐哪里,烟都往你脸上飘 PS图层千千万,结果最后没保存 三 ...

  7. 黑客爱用的 HOOK 技术大揭秘!

    黑客爱用的 HOOK 技术大揭秘! 什么是 HOOK 技术? 病毒木马为何惨遭杀软拦截? 商业软件为何频遭免费破解? 系统漏洞为何能被补丁修复? 这一切的背后到底是人性的扭曲,还是道德的沦丧,敬请收看 ...

  8. 【Dev Club 分享第三期】iOS 黑客技术大揭秘

    "8小时内拼工作,8小时外拼成长"这是大家共同的理想.除了每天忙于工作外,我们都希望能更多地区吸收领域内的新知识与新技能,从而走向人生巅峰. Dev Club 是一个交流移动开发技 ...

  9. 【Dev Club分享第三期】iOS黑客技术大揭秘

    "8小时内拼工作,8小时外拼成长"这是大家共同的理想.除了每天忙于工作外,我们都希望能更多地区吸收领域内的新知识与新技能,从而走向人生巅峰. Dev Club 是一个交流移动开发技 ...

最新文章

  1. 浅谈图分析商业化的机遇与挑战,你注意到了吗?
  2. 大厂面试录取通过率不到3%,我真是太太太难了......
  3. JavaScript_原型和继承(2017-03-15)
  4. java之父求职_Java求职实战之继承和多态
  5. 在markdown编辑模式中打出彩色的文字
  6. 各种推荐算法的 benchmark
  7. mui 怎么调用系统键盘_电脑开机关机的几种方法,计算机电源键鼠标键盘网络唤醒图文教程...
  8. 100项PPT制作技术
  9. 3*3旋转矩阵得到旋转角(c++代码)
  10. entity framework 新手入门篇(1)-建立模型
  11. 云梦四时歌服务器维护,《云梦四时歌》服务器已满怎么解决 服务器排不了队伍解决方法...
  12. wxml 点击图片下载_小程序图表插件
  13. Oracle创建表,id为自增序列
  14. JDK环境变量配置-win10
  15. MySQL经典100问
  16. 计算机图形学——DDA算法
  17. Android中实时获取声音频率
  18. [DSP学习笔记]基于TMS320F28335的FIR滤波实现
  19. VMware(必须是15.1.0才兼容win10) 安装ubuntu步骤(解决安装时候总是黑屏得问题,去掉3D加速图形)
  20. 基于Python的国际绝对音名十二等律标准音高频率对照表制作(浮点型精度、十二等律体系、A4=440.01000Hz)

热门文章

  1. python前景怎么样-Python在中国的发展前景怎么样?有哪些就业方向?
  2. 写一个关键词检索全网信息的搜索引擎web
  3. SVG排版公众号文章『视频号卡片定位和隐藏』模板代码
  4. 武功再高,也怕菜刀——小阿被彻底推倒了
  5. 皮卡丘File Inclusion
  6. Windows PC端|免费下载Microsoft Office官方授权版系列工具
  7. 居家好物分享:多特瑞精油,让生活更“多”姿“多”彩!
  8. 并蒂莲花, 不顾诸神
  9. 如何在页面上减少用户操作?
  10. java atomiclong 使用_每天一个Java类之AtomicLong | 学步园