目前似乎没有特定的类。
我找到了这个,但它不起作用,因为暗模式和亮模式的主题 ID 相同(我想这是由配色方案定义的)。
我猜一个简短的脚本会有帮助?而且,也许可以将此添加到 Discourse 的核心中?
目前似乎没有特定的类。
我找到了这个,但它不起作用,因为暗模式和亮模式的主题 ID 相同(我想这是由配色方案定义的)。
我猜一个简短的脚本会有帮助?而且,也许可以将此添加到 Discourse 的核心中?
您介意解释一下为什么需要在 body 中添加特定的类来支持 dark 或 light 模式吗?
这个核心功能不能满足您的需求吗?
论坛工作人员不喜欢一个特定的生成颜色变量(--tertiary-very-low),它会产生这种特定的棕褐色:
他们想调整它,但似乎我无法真正更改它,因为它是由系统生成的,并且没有针对暗模式的父级特定类。
不过,我偶然发现了这个信息:
我不知道它是否有效,我还没有机会尝试,因为现在有太多事情要做
。但如果它有效,那就可以了。事实上,这会更好。
我们(抱歉,我说我们是因为我和 @Canapin 一起在我们的论坛上进行调整)使用 Discourse 法语版中的预设“Café crème”(我猜是“咖啡”)制作了一个深色主题,并且我们刚刚将
的颜色从棕色改成了红色。
这个主题奇怪的地方在于,超链接的颜色和文本几乎一样。
所以当它们是嵌入式链接时,你几乎看不到它们:
所以我们的想法是让它们稍微棕一点,这样它们就能脱颖而出。但是当我们调整颜色配置中的 quaternary 设置时,一大堆颜色也跟着改变了:DM 后面“气泡”的背景变成了更接近鸟粪的颜色,而不是 @Canapin 第一条消息中显示的棕色。顶部消息框(“已禁用外发邮件”框)也变成了同样的鸟粪颜色。
所以最初的想法是使用 css 来给超链接着色,但我们还没有弄清楚怎么做。
使用 .cooked a 作为 CSS 目标应该可以帮助您为这些链接设置自定义颜色。
虽然我们的核心系统现在允许为相应的模式使用深色/浅色方案选择,但您也可以像这样使用 CSS 媒体查询来处理深色/浅色模式:
@media (prefers-color-scheme: dark) {
.cooked a, .d-editor-preview a {
color: var(--primary-low-mid);
}
}
工作完成了。谢谢!
哎呀。
不,它没起作用。
如果我错了,请纠正我。prefers-color-scheme 是基于设备的偏好,而不是实际选择的 Discourse 主题?
在我的 Windows 设备上,我设置了深色主题。因此,使用我设备偏好的网站将显示深色主题(如果可能)。
但是,在我的论坛上,我特意选择使用浅色主题,而不是深色主题。
尽管我使用的是浅色主题,但媒体查询 prefers-color-scheme 仍然被加载:
浅色主题,无深色模式,
尽管如此,深色主题的规则仍然被应用:
全屏:
抱歉,我误解了您的意思,以为您是指系统设置的暗黑模式,从而在论坛上触发暗黑模式。
所以您个人在使用浅色主题,但您的用户在使用暗黑模式?
之前的截图显示了暗黑模式的实际效果,但您最近的回复却说您在使用浅色主题。
您好,抱歉,这并不清楚,尤其是我在谈论两种相同类型但颜色方案不同的东西。另外,这让我有点困惑。
那么我的问题是:在 Discourse 中,我如何知道正在使用哪种颜色方案,而不管设备的深色/浅色模式偏好如何?
如果我理解正确的话:
如果我的设备(Windows 10)设置为深色模式,但我选择 Discourse 中的浅色方案,那么我的论坛 CSS 中的媒体查询 (prefers-color-scheme: dark) 仍然会返回某种“true”,并且我的嵌套规则将被应用,尽管我在我的论坛(即使 Windows 设置为深色模式)中选择了浅色方案。
所以:我如何在 Discourse 的 HTML 代码中知道我当前使用的是浅色还是深色方案?我没有找到像“light-color-scheme”或“dark-color-scheme”这样的父类。因此,我无法在 CSS 中区分/定位特定的颜色方案,也无法仅为其中一种或另一种创建规则。
明白了,我现在明白了。
我们不会根据用户当前选择的配色方案向 body 添加任何类。
如果我可以进一步探究一下,您是因为不喜欢我们颜色函数为您的当前深色方案生成的 --tertiary 的颜色吗?
您希望通过一个 body 类实现什么目标,而您觉得目前无法做到?
是的,正是如此 ![]()
现在我读到这个问题……我不确定,因为据我所知,替换生成颜色的唯一方法是
:root {
--primary-medium: #666666;
}
但是,作为一个根选择器,html 或 body 元素上的类无法在 :root 之前定位颜色方案。
所以……我不知道。
但简而言之,想法是为特定的颜色方案更改特定的生成颜色。 ![]()
如果不可能,也没关系。我们对我们的方案颜色进行了一些实验,目前对生成的颜色感到满意。
可以做得更好,但这远非一个大问题。 ![]()
如果您愿意,有一种隐藏的解决方法。
您可以创建一个文件夹,并在其中仅添加一个 about.json 文件。
我实际上就是这样创建了一个 solarized light 颜色方案,因为我想指定我自己的变体,而不是依赖内置的颜色函数。
这是我制作的实际 about.json 文件。
然后,您将安装这个“主题”,它将把这个颜色方案安装到您的论坛上。届时,您就可以让它在其他主题上使用了。
{
"name": "Solarized Light",
"component": false,
"license_url": null,
"about_url": null,
"authors": null,
"theme_version": null,
"minimum_discourse_version": null,
"maximum_discourse_version": null,
"assets": {
},
"color_schemes": {
"Solarized Light": {
"primary": "002B36",
"primary-high": "4C6869",
"primary-medium": "7E918C",
"primary-low-mid": "A4AFA5",
"primary-low": "D6D8C7",
"primary-very-low": "F0ECD7",
"secondary": "FCF6E1",
"secondary-very-high": "E8E6D3",
"secondary-high": "97A59D",
"secondary-medium": "6C8280",
"secondary-low": "325458",
"tertiary": "0088cc",
"tertiary-high": "329ED0",
"tertiary-medium": "7EBFD7",
"tertiary-low": "D6E6DE",
"quaternary": "e45735",
"header_background": "FCF6E1",
"header_primary": "002B36",
"highlight": "ffff4d",
"highlight-high": "BCAA7F",
"highlight-medium": "E3D0A3",
"highlight-low": "FDF9AD",
"danger": "e45735",
"danger-low": "F8D9C2",
"success": "009900",
"success-medium": "4CB544",
"success-low": "CFE5B9",
"love": "fa6c8d",
"love-low": "FCDDD2"
}
},
"modifiers": {
},
"learn_more": "https://meta.discourse.org/t/beginners-guide-to-using-discourse-themes/91966"
}
我记得很久以前,在我更深入地研究我的 Discourse 安装时,我就看到过这个!
这绝对是一个很好的解决方法。谢谢。我会认为这是正确的解决方案,即使它可能被认为有点“hacky”。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.