当前位置: 首页 > backend >正文

网站都变成灰色了,它是怎么实现的?

估计大家发现了,今天,各大网站、APP都变灰了,原因想必大家都知道了。

网站都变成灰色了,它是怎么实现的?

文章目录

  • 网站都变成灰色了,它是怎么实现的?
    • 网站变灰
      • CSDN
      • 百度
      • 火狐
      • 小米
      • 阿里云
      • 腾讯
      • 哔哩哔哩
      • 华为 ?
    • 实现
    • 分析
  • 结语

我本来想写一篇文章来聊聊,没想到之前已经有一位大佬写过了,而且写的还不错,就不费工夫了,分享给大家吧(对原文有一些删减)。

网站变灰

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

在这里插入图片描述

CSDN

在这里插入图片描述

百度

在这里插入图片描述

火狐

在这里插入图片描述

小米

在这里插入图片描述

阿里云

在这里插入图片描述

腾讯

在这里插入图片描述

哔哩哔哩

在这里插入图片描述

华为 ?

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

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

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

实现

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

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

在这里插入图片描述

变灰效果

其 CSS 内容为:

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

技术实现看完了,最后,缅怀一下江老,感谢他为国家的发展所做出的一切!

结语

如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、评论、收藏➕关注,您的支持是我坚持写作最大的动力。

http://www.xdnf.cn/news/11811.html

相关文章:

  • HTML简单入门教程
  • 高效阅读英语信息的方法
  • 十款内网管理软件的推荐,总有一款适合你!
  • 和平精英连接服务器未响应,和平精英卡顿怎么解决-和平精英卡顿问题解决方法_快吧手游...
  • 招聘网站(自己用着方便)
  • 曝阿里P8员工招聘私人助理
  • 个人网站的搭建部署及自定义域名
  • ras同步适配器黄叹号,电信3g无法拨号(5005)故障
  • 破解密码QQ网站_如何快速破解QQ密码?快速破解QQ密码方法分享_小白白客记录贴
  • ZooKeeper集群启动失败案例总结
  • js 获取中文的拼音
  • 互信息(Mutual Information)的介绍
  • iPad 3g版完美实现打电话功能(phoneitipad破解)
  • 目前还存活的多个电驴下载站点
  • 郁金香delphi外挂编程(翻录版) 种子发布
  • 【css js vue】超详细!!实现 tab菜单 动态滑动效果
  • 各种音视频编解码学习详解(8)--Real系列
  • 颜色空间(2)
  • 基于博弈树的开源五子棋AI教程[4 静态棋盘评估]
  • Ubuntu11.10安装与使用图文教程
  • CCIE认证知识点之IPv6地址
  • 反恐精英的二十二条军规
  • 发布一款小软件:和讯博客助手-测试版- 0.3.0
  • 艾伟_转载:用C#打造quot;QQ对战平台挤房器quot;
  • 织梦DedeCMS网站源代码分析详解
  • Android手机一键Root原理分析
  • 大数据比赛之数据可视化ECharts 基本api
  • 常用的53款免费软件
  • 51c51单片机学习网
  • Glu Mobile:Age Of Empires III——帝国时代Ⅲ 汉化版