【发布时间】:2015-09-15 09:24:26
【问题描述】:
我有一个设计,我需要能够根据 cms 中的输入更改页面上的颜色。
为此,我将一个类添加到一个包含的 div 中,并且我将根据该周围的类更改颜色。
会有一定数量的颜色。 (8,我想。还没有决定。)
我的想法是使用 mixin 来实现这一点。例如。
示例 HTML
<div class="color-1>
<h1 class="h1">My Title</h1>
</div>
LESS Mixin 示例
.color() {
@color_1: red;
.color-1 & {
color: @color_1;
}
@color_2: blue;
.color-2 & {
color: @color_2;
}
//etc.....
//I have a similar mixin for background-color -> .bg-color();
}
少例子
.h1 {
.color();
background-color: #fff;
@media screen and (min-width: 960px) {
color: #fff;
.bg-color();
}
}
问题
问题是移动版的特异性高于桌面版。
呈现的 CSS 示例
//Could be color-2, color-3 etc. depending on class, doesn't matter for this example
.color-1 .h1 { //This would override the media query below due to 2 classes
color:red;
}
.h1 {
@media screen and (min-width: 960px) {
color: #fff;
background:color: red;
}
}
此问题将影响页面的其余部分。有没有更好的方法来完成我正在寻找的东西而不会到处粘贴重要的标签?
________________编辑________________
为了清楚起见,我正在构建的网站将允许特定级别的登录用户更改其个人页面的主颜色,我仍然需要客户决定有多少颜色,但我认为它会在 8 左右. 而不是写出每一个,或者为每一个都有一个单独的样式表(维护这将是可怕的),我决定为它创建一个 Mixin。将有多种背景颜色和文本颜色需要更改,并且由于设计原因,它们需要在移动桌面和平板电脑上更改为不同的颜色。
【问题讨论】:
-
作为一个快速修复我正在使用
.h1 { [class*=' color-'] & { color: #fff; } }但如果可能的话我想要一个更好的解决方案 -
您也可以使用
!important覆盖特异性计算。 -
系统发育,如问题中所述,如果完全可能,我想避免使用
!important。我将在几个地方需要它,并且使用重要完全否定了 css 级联的想法。如果在另一个实例中需要再次更改任何内容,我需要用页面下方的另一个标记覆盖该重要标记。可能有更好的方法可以编写LESS mixin?不过,感谢您的贡献。
标签: css less less-mixins