优化深色模式下的评论系统
NexT 主题很早就支持了深色模式,但是之前一直没有仔细配置过。其默认配置直接能用,但是有很多不协调的地方,特别是评论部分(因为要加载第三方插件)。
1. DisqusJS
这个改起来比较简单。主要是一些文字在深色模式下看不清楚,直接改一下颜色就可以了。
1 | @media (prefers-color-scheme: dark) { |
2. Disqus
这个比较麻烦。主要是 Disqus 自带的暗色模式背景颜色特别深(#121212),跟旁边的背景颜色差别比较大。两者又是直接嵌套在一起,也没有边界,显得特别突兀。而 Disqus 的评论部分又是一个 <iframe>
,没有办法直接修改里面元素的颜色。
解决方法是使用 CSS 的混合模式:
1 | @media (prefers-color-scheme: dark) { |
这样,比旁边背景深的颜色(实际上就只有 Disqus 的背景部分)都会被替换成和旁边背景一样的颜色,整个评论部分完全融入到了旁边的背景之中。
3. Giscus
Giscus 自带的 preferred_color_scheme
主题支持自动切换 Github Light 和 Github Dark 两种主题,但是 Github Dark 主题的问题和上面 Disqus 类似,颜色和 NexT 的深色模式背景不搭。
好在 Giscus 支持自定义主题,我把 Github Light 和 Noborder Dark 两个主题合并起来,得到一个新的主题文件。
然后配置 NexT:
1 | giscus: |
这里我还遇到了跨域(CORS)的问题。我是使用 caddy 托管网站,需要设置一下:
1 | wangjiezhe.com { |
附:上面用到的一些颜色:
- 千草 - #3A8FB7
- 露草 - #2EA9DF
- 暗黑 - #333
- 暗灰 - #666