一行代码实现网站“暗模式”

参考文章 Dark Mode in One Line of Code!

本文不是翻译,也不是转载,而是用自己的语言表达上面文章想表达的东西。本来想设置成“转载”或“翻译”文章,但并没有途径获取原作者的授权。但毕竟是拾人牙慧,惭愧惭愧

我是不喜欢这样的标题的,除非内容真如标题所说。是的,只需要这一行代码,就可以让你的网站变成“暗模式”:

document.querySelector('html').style.filter = 'invert(1)'

你可以按 F12打开开发者工具,然后切换到 控制台/console栏,然后输入上面的代码,然后回车
是吧!

如果你觉得某些元素不需要“暗模式”,可以针对那个元素设置 css:

img {
  filter: invert(1);
}

比如图片,比如已经进行了暗处理的代码块,比如在暗模式下不好看的一切元素……

如果你需要在“暗模式”和“亮模式”之间切换,则可以给某按钮绑定点击事件:

function toggleDark() {
  var tmp = document.querySelector('html').style.filter
  document.querySelector('html').style.filter = {
    '': 'invert(1)',
    'invert(1)': ''
  }[tmp]
}

你也可以在控制台试试下面代码:

document.querySelector('html').onclick = function toggleDark() {
  var tmp = document.querySelector('html').style.filter
  document.querySelector('html').style.filter = {
    '': 'invert(1)',
    'invert(1)': ''
  }[tmp]
}

当你点击网页时,就会来回切换暗、亮模式

如果你不需要切换暗亮模式,也许用 css 设置暗模式会更合适:

html {
  filter: invert(1);
}
img {
  filter: invert(1);
}

写在后面

filter 是 css 里较新的属性,功能很强大,类似的,也可以通过一行代码,让网站变灰:

document.querySelector('html').style.filter = 'grayscale(1)';

本文只说了“怎么做”,而未说明“为什么”,如果感兴趣欢迎一起讨论。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值