• 推荐
  • 评论
  • 收藏

用css滤镜实现 微信小程序 深色/暗黑 模式

2024-09-14    7709次浏览
在微信小程序中实现深色/暗黑模式,虽然不能直接使用CSS的filter属性(如invert())来全局反转颜色(因为这会导致图片、图标等非文本内容也发生反转,影响用户体验),但是,把不需要反转的,在反转过来。或者用js,给想要反转的,加上反转样式,再对其他的做微调。这样个人觉得,开发成本是最低的。如下代码:
@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); } 
}
如果是自己定义类可以这样写:
.dark-mode {
    filter: invert(1) hue-rotate(180deg);
    // 不需要反转的,再反转回去比如:图片等
    img,
    iframe,
    .ntj-button--primary, .ntj-button--primary,
    .invert-restore{
        filter:invert(1)hue-rotate(180deg);
    }
    .invert-restore{
        // 嵌套反转
        img{
            filter: none;
        }
    }
}