css 如何防止系统强制暗模式?

t9aqgxwy  于 2023-04-01  发布在  其他
关注(0)|答案(5)|浏览(265)

暗/光模式切换设置在网站和应用程序是tredning和有一些系统默认的主题模式也可像 chrome dev-tools提供强制黑暗模式,但我希望我的网站被认为是在它已经建成的方式.所以,我如何防止强制黑暗模式,由 chrome 应用?
我试过prefers-color-scheme媒体查询,但我想,我做错了什么或错过了什么。

@media (prefers-color-scheme: dark) {
    body {
        background: #fff;
    }
}
oxcyiej7

oxcyiej71#

Google发布了一篇文章,解释了启用强制黑暗模式的不同方法,以及通过JavaScript和CSS处理它们的策略。
https://developer.chrome.com/blog/auto-dark-theme/#detecting-auto-dark-theme
通过在Chrome中强制暗模式,您可以进行暗模式检测,并且他们已经包含了一个选择退出的CSS属性。

:root {
  color-scheme: only light;
}

或特定项目:

#my-onlylight-element {
  color-scheme: only light;
}

Safari似乎也支持这一点(此表中的Chrome信息已过时,已报告错误):https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme

gcmastyq

gcmastyq2#

TL;DR暂时无法

为什么我们需要这个?

似乎有Android手机,Chrome默认情况下根据他们为手机选择的主题模式(亮与暗)启用了这一功能。
如果您开发模板并拥有2017-2018年的旧项目,客户会在客户投诉时要求退款。如果您不知道存在这样的功能,几乎不可能诊断。在许多情况下,网站无法阅读。
它使网站上的暗/亮切换体验无效(破坏了CSS网站上的体验)。无法检测到何时发生这种情况也没有帮助,我们可以删除切换并直接提供黑暗主题或警告用户有问题。

无解决方案

到目前为止还没有办法改变它,他们甚至改变了图像上的背景,他们也做得很好,. jpeg...🤣😂.这不仅仅是一个简单的颜色交换。
我认为他们采用“用户为王”的方法。如果用户想强制执行,他们会站在用户一边。
它在每次更新中变得越来越好。
它也会扰乱开发检查工具中的颜色选择器。。
即使他们要添加一个“修复”,它也不会在旧的浏览器上可用。我认为他们甚至没有想到实现一种方法来绕过或“白色名单”。

但是

这里有一个概念性的方法:https://stackoverflow.com/a/60462984/1427338
我用CSS得到了混合的结果。在一个简单的页面中它可以工作,但在更复杂的项目中有太多的边缘情况来处理它们,而且没有修复图像(...它取代了图像中的背景!)

cotxawn7

cotxawn73#

我找到了一个解决方案(至少对我来说):
如果主体的背景色设置为黑色和背景图像:添加了带有明亮颜色的线性渐变(覆盖背景色),chrome似乎被欺骗了,以为一切都很好,它停止触摸/重新着色其他元素。至少从今天开始(Chrome版本86)-也许这有助于...

body { 
   background-image: linear-gradient(#ffffff, #ffffff); 
   background-color: #000000;
}
scyqe7ek

scyqe7ek4#

我发现的一个解决方法是使用SVG图像作为在暗模式下切换颜色的背景

waxmsbnn

waxmsbnn5#

对于Reactjs应用程序,在index.html文件中添加以下行:

<meta name="color-scheme" content="only light">

注意:Google不推荐这种方法,并鼓励开发人员在他们的网站上实现暗模式的UI。更多信息在这里。

相关问题