如何阻止暗模式破坏我的 CSS

ner*_*ick 26 css

我有一个带有 css 样式的网站。当我在启用深色模式的某些浏览器中查看时,CSS 绝对被破坏,并且我的网站中更改的颜色看起来绝对丑陋。如何防止我的 css/colorschemes 由于黑暗模式而被更改?

当我通过 Android 设备上的 Whatsapp 发送的链接打开我的 url 时,默认浏览器 - Android 的“互联网”应用程序会自动重新设置 CSS 样式,因为我激活了暗模式。如果其他用户访问我的页面并启用了暗模式,我希望他们看到原始样式而不是暗模式编辑版本。

我发现你可以使用这个媒体查询来设置暗模式的CSS @media (prefers-color-scheme: dark) {:。我可以复制我的整个 css 文件,该文件目前有 3000 行长,其中包含深色和浅色,括号之间使用相同的代码,但这似乎毫无意义。还有其他可行的方法吗?

在此输入图像描述

Ten*_*ken 28

事实证明,Samsung Internet \xe2\x80\x94 是大量设备的默认 Web 浏览器,并且您的屏幕截图中的 \xe2\x80\x94 默默地应用了一种过滤器,该过滤器可以以非特定方式转换网站上的颜色。当用户dark mode在其设备上启用时,这是一种简单的方式。请参阅这篇博文了解更多信息。

\n

其要点是,从 Samsung Internet 版本 13.0.1.64 开始,使用 javascript 或 CSS 无法检测到此过滤器。

\n

作为网络开发人员,你唯一能做的就是警告用户并敦促他们切换到更好的浏览器:

\n
 <script>\n   if (navigator.userAgent.match(/samsung/i)) {\n       alert("Your browser (Samsung Internet) may not show this website" + \n             "correctly. Please consider using a standards-compliant" + \n             "browser instead. \\n\\n" +\n             "We recommend Firefox, Microsoft Edge, or Google Chrome.");\n   }\n</script>\n
Run Code Online (Sandbox Code Playgroud)\n

  • 呃呃呃呃呃。并为这个答案点赞。我刚刚开始深入研究 web/html/css 开发内容,唯一比浏览器更糟糕的是 &lt;style="font-family:creepy-dripping-green-shit"&gt;电子邮件客户端... (5认同)

Mar*_*ono 19

有同样的问题。这是我发现的。

我将此元标记添加到标题标记中:

<meta name="color-scheme" content="light only">
Run Code Online (Sandbox Code Playgroud)

上面的meta标签表示该配色方案仅受浅色模式支持。

另一种选择是浅色模式下首选的方案,但它也支持深色模式:

<meta name="color-scheme" content="light dark">
Run Code Online (Sandbox Code Playgroud)

在 Safari、Chrome、Samsung、Facebook 应用内浏览器和 Firefox 上进行了测试。

另一种方法是使用 CSS:

:root {
     color-scheme: light only;
}
Run Code Online (Sandbox Code Playgroud)

以上表明该造型仅使用轻型版本。

  • 据我所知,这并不能阻止三星浏览器应用其奇怪的颜色调整 (4认同)
  • 我尝试使用这个,但它不起作用。在最新版本的 Chrome (107.0.5304.107) 上测试 (3认同)
  • 配色方案:仅浅色;这适用于 Edge、chrome、firefox,并且可以用于定位特定元素,在我的例子中是品牌徽标 (2认同)

Fed*_*tti 0

如果我理解的话,您希望用户看到所谓的浅色版本,即使他们的浏览器设置为更喜欢深色版本。我\xe2\x80\x99m 所建议的远非完美\xe2\x80\xa6 我的意思是,我不会\xe2\x80\x99t 这样做,但我认为它应该有效。只需复制并粘贴您在查询下编写的 CSS @media (prefers-color-scheme: dark),然后手动更改其中不起作用的内容,而无需更改括号外的代码。无论用户在浏览器设置中选择什么,他们都应该看到您网站的原始、精简版本。说实话,我不知道你为什么要这样做:恕我直言,理想的方法是提供浅色和深色主题以及默认的后备。

\n

  • 问题是,如果 OP 看到不同的行为,则浏览器可能被设置为执行一些古怪的操作,并且无论如何都不会响应“@media(首选颜色方案:深色)”。 (2认同)