你好,
我尝试通过远程主题覆盖新的边框半径变量,但似乎核心的 :root 变量总是优先。如果我在管理后台创建一个主题组件,我可以覆盖这些变量。有没有办法通过主题来覆盖它们?我错过了什么? ![]()
这个微小的改动非常有用,非常感谢!![]()
好的,它按预期工作,只是我的测试站点在开玩笑。![]()
你好,
我尝试通过远程主题覆盖新的边框半径变量,但似乎核心的 :root 变量总是优先。如果我在管理后台创建一个主题组件,我可以覆盖这些变量。有没有办法通过主题来覆盖它们?我错过了什么? ![]()
这个微小的改动非常有用,非常感谢!![]()
好的,它按预期工作,只是我的测试站点在开玩笑。![]()
呃,这似乎不是个玩笑
使用远程主题时,我只能通过使用 !important 来覆盖它。
如果我像这样使用 ![]()
$border-radius: 2em !important;
:root {
--d-button-border-radius: #{$border-radius};
--d-input-border-radius: #{$border-radius};
}
否则,如果我像这样尝试 ![]()
:root {
--d-button-border-radius: 2em;
--d-input-border-radius: 2em;
}
那么核心的 :root 变量会被优先考虑。
我错过了什么?
谢谢!![]()
你好 Charlie,
谢谢你的检查 ![]()
我尝试将其添加到 scss/custom-variables.scss 并将其导入到 common.scss。我也尝试直接将其添加到 common.scss。
我刚注意到,如果没有为主题分配其他组件(在 admin 中创建),它就可以工作。如果我在 admin 中创建一个带有一些 CSS 的组件,那么它就无法覆盖我核心的 root 变量。
如果主题没有组件或组件 Common / CSS 为空,它就可以工作。

如果我创建一个带有 Common / CSS 的组件并将其激活到主题。
那么它对我来说就无效了。
d-default-border-radius 和 d-select-body-border-radius 是自定义的。
感谢你的帮助! ![]()
明白了。非常有趣。感谢您提供的清晰步骤。
我会看看我能做出什么。目前我怀疑是否会有比您已经使用的 !important 更好的解决方案,但了解它的工作原理以及原因将很有帮助。
嗯,是的,我可以重现这个问题……有点奇怪。
我有一个远程主题,其中 common.scss 只包含:
:root {
--d-border-radius: 100px;
}
这有效,我得到了圆形的按钮和其他元素:
一旦我添加了一个包含 CSS 的本地主题组件,它就会中断。我创建了一个本地主题组件,其中 common.scss 只包含:
body {
background: red;
}
我得到了红色的背景,但 border-radius 消失了:
同样的组件远程工作正常。我同时获得了红色背景和圆角边框。
我认为这与我们将 variables.scss 注入每个主题 CSS 文件有关。现在,我们在 variables.scss 中有这个:
:root {
--topic-body-width: #{$topic-body-width};
--topic-body-width-padding: #{$topic-body-width-padding};
--topic-avatar-width: #{$topic-avatar-width};
--d-border-radius: initial;
--d-nav-pill-border-radius: var(--d-border-radius);
--d-button-border-radius: var(--d-border-radius);
--d-input-border-radius: var(--d-border-radius);
}
因为我们将该 SCSS 文件注入到每个主题和插件的 SCSS 文件中,所以它会被一遍又一遍地重复:
目前唯一可以覆盖它的方法是将覆盖添加到最后一个主题样式表中,只有这样它才会被最后输出。
我认为我们需要将这个 :root 声明移到核心中 variables.scss 之外的某个全局位置。
啊哈!非常感谢,我之前从未真正理解过它们为何重复,只是完全忽略了。
我已经将它们移到另一个文件中,这样就不会重复了,并且我已确认这解决了问题。