经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS3 » 查看文章
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码_css3_CSS
来源:jb51  时间:2021/3/1 8:40:08  对本文有异议

前端

css3,filter实现不但可以实现网页灰色效果,还可以辅助实现黑夜模式效果。我们来看看实现方式吧!

filter属性介绍

  1. filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url();

提示: 使用空格分隔多个滤镜。

网站灰色效果

这个效果博客建立之初,在总结css常用效果的时候就写了。

只需要如下代码就可以轻松实现!

代码如下:

  1. html {
  2. filter: grayscale(100%);//IE浏览器
  3. -webkit-filter: grayscale(100%);//谷歌浏览器
  4. -moz-filter: grayscale(100%);//火狐
  5. -ms-filter: grayscale(100%);
  6. -o-filter: grayscale(100%);
  7. filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
  8. -webkit-filter: grayscale(1);//谷歌浏览器
  9. }

相比灰色效果,黑夜模式实现,难度就大了一点!

黑夜模式判断

如果是纯Web,则在现代浏览器下,可以使用prefers-color-scheme查询语句。

语法如下:

no-preference 系统没有告知用户使用的颜色方案。
light 表示系统倾向于使用浅色主题。
dark 表示系统倾向于使用深色主题。

例如:

  1. /* 深色模式 */
  2. @media (prefers-color-scheme: dark) {
  3. body { background: #333; color: white; }
  4. }
  5. /* 浅色模式 */
  6. @media (prefers-color-scheme: light) {
  7. body { background: white; color: #333; }
  8. }

如果需要在JavaScript代码中对系统的深浅主题进行判断,可以使用原生的window.matchMedia()方法,例如:

  1. // 是否支持深色模式
  2. // 返回true或false
  3. window.matchMedia("(prefers-color-scheme: dark)").matches;

黑夜模式代码

  1. html {
  2. filter: invert(1) hue-rotate(.5turn);
  3. }

这样之后,图片就会反过来了,很难看

  1. img {
  2. filter: invert(1) hue-rotate(.5turn);
  3. }

图片再加一层,反反得正,这样纯图片就可以了

因此,合并起来可以这样设置:

  1. html, img {
  2. filter: invert(1) hue-rotate(.5turn);
  3. }
  4. img {
  5. opacity: .75;
  6. }

但是背景图,黑色阴影就有问题了,针对背景图,可以设置如下:

  1. @media (prefers-color-scheme: dark) {
  2. html, img {
  3. filter: invert(1) hue-rotate(180deg);
  4. }
  5. .bgfilter{
  6. filter: invert(1) hue-rotate(180deg);
  7. }
  8. .some-ele-box {
  9. box-shadow: none;
  10. }
  11. }

问题

上面的设置,只针对浅色背景,无背景,或者透明背景是不起作用的。

此外,还要针对各个样式做特殊处理。例如可以配合filter 做全局变量,等,才可以完美匹配黑夜模式。例如如下:

  1. @media (prefers-color-scheme: dark) {
  2. html {
  3. filter:invert(1) hue-rotate(180deg)
  4. }
  5.  
  6. .dark-img,img {
  7. filter: invert(1) hue-rotate(180deg)
  8. }
  9. // 背景图片特殊处理
  10. //全局颜色特殊处理
  11. //background-color: var(--darkColor)
  12. }

到此这篇关于CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码的文章就介绍到这了,更多相关CSS3 filter滤镜内容请搜索w3xue以前的文章或继续浏览下面的相关文章,希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号