CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码


Posted in HTML / CSS onFebruary 24, 2021

前端

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

filter属性介绍

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

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

网站灰色效果

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

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

代码如下:

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

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

黑夜模式判断

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

语法如下:

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

例如:

/* 深色模式 */
@media (prefers-color-scheme: dark) {
    body { background: #333; color: white; }
}
/* 浅色模式 */
@media (prefers-color-scheme: light) {
    body { background: white; color: #333; }
}

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

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

黑夜模式代码

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

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

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

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

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

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

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

@media (prefers-color-scheme: dark) {
    html, img { 
        filter: invert(1) hue-rotate(180deg);
    }
   .bgfilter{
    filter: invert(1) hue-rotate(180deg);
  }
    .some-ele-box {
        box-shadow: none;
    }
}

问题

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

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

@media (prefers-color-scheme: dark) {
    html {
        filter:invert(1) hue-rotate(180deg)
    }

    .dark-img,img {
        filter: invert(1) hue-rotate(180deg)
    }
   // 背景图片特殊处理
  //全局颜色特殊处理
   //background-color: var(--darkColor)
}

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

HTML / CSS 相关文章推荐
css3实现一个div设置多张背景图片及background-image属性实例演示
Aug 10 HTML / CSS
css3 中的新特性加强记忆详解
Apr 16 HTML / CSS
css3 利用transform打造走动的2D时钟
Oct 20 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
Jul 11 HTML / CSS
详解canvas drawImage()方法绘制图片不显示的问题
Oct 08 HTML / CSS
html5 canvas 使用示例
Oct 22 HTML / CSS
Html5实现如何在两个div元素之间拖放图像
Mar 29 HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
Apr 08 HTML / CSS
详解HTML5中ol标签的用法
Sep 08 HTML / CSS
HTML5之消息通知的使用(Web Notification)
Oct 30 HTML / CSS
Canvas实现放大镜效果完整案例分析(附代码)
Nov 26 HTML / CSS
css3 实现文字闪烁效果的三种方式示例代码
Apr 25 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
Feb 08 #HTML / CSS
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
Jan 27 #HTML / CSS
纯CSS3实现运行时钟的示例代码
Jan 25 #HTML / CSS
CSS3选择器新增问题的实现
Jan 21 #HTML / CSS
CSS3.0实现霓虹灯按钮动画特效的示例代码
Jan 12 #HTML / CSS
css3 实现滚动条美化效果的实例代码
Jan 06 #HTML / CSS
CSS3实现苹果手机解锁的字体闪亮效果示例
Jan 05 #HTML / CSS
You might like
五个PHP程序员工具
2008/05/26 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
python通过线程实现定时器timer的方法
2015/03/16 Python
Python类的用法实例浅析
2015/05/27 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
简单了解python元组tuple相关原理
2019/12/02 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
小学标准化建设汇报材料
2014/08/16 职场文书
购房意向书
2014/08/30 职场文书
自主招生学校推荐信
2014/09/26 职场文书
班主任工作实习计划
2015/01/16 职场文书