前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DarkMode(4):css滤镜 颜色反转实现深色模式

DarkMode(4):css滤镜 颜色反转实现深色模式

原创
作者头像
周陆军
发布2020-12-11 22:51:01
1.7K0
发布2020-12-11 22:51:01
举报
文章被收录于专栏:前端架构

在《DarkMode(1):产品应用深色模式分析》提过,单纯反转是不行的。但是,把不需要反转的,在反转过来。或者用js,给想要反转的,加上反转样式,再对其他的做微调。这样个人觉得,开发成本是最低的

代码语言:javascript
复制
@media (prefers-color-scheme: dark) {
 // one
 .app{
  filter: invert(1) hue-rotate(180deg);
  img,button,.active {
    //filter: brightness(.8) contrast(1.2);
    filter: invert(1) hue-rotate(180deg);
  }
 }
 // two
 div:not(.no-invert){
   filter: invert(1) hue-rotate(180deg);
 }
 // three
 :not(img) { filter: invert(100%) hue-rotate(180deg); } 
}

老外说:It’s not 100% accurate in my case, because my dark background color is not perfectly black, but it’s better than nothing.

真正实战与项目,一般是这样的

代码语言:javascript
复制
.dark-mode-box {
    filter: invert(1) hue-rotate(180deg);
    
    // 不需要反转的,在反转回去
    // 图片
    img,
    iframe,
    // element 元素
    .el-tag--primary, .el-tag--success, .el-tag--warning, .el-tag--error,
    .el-button--primary, .el-button--primary,
    .invert-restore{
        filter: invert(1) hue-rotate(180deg);
    }
    .invert-restore{
        // 反转回去的,里面的东西,在去除反转
        img{
            filter: none;
        }
    }
}

这个也大致可用。这是最省事的办法。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档