gpt4 book ai didi

css - LESS CSS - 根据主体类别更改主题颜色的变量值

转载 作者:技术小花猫 更新时间:2023-10-29 11:06:37 29 4
gpt4 key购买 nike

在这里掌握 LESS,但仍有一点不清楚。

假设我的网站有多个颜色主题,由 body 标签上的类控制。由此我可以重新定义每个主题中每个元素的各种颜色。如果我有很多要更改的元素……以及很多主题,这很容易,但相当耗时。每次添加新主题时,我都需要用不同的颜色值再次写出所有选择器。

到目前为止,我的工作基于我发现的另一篇文章: LESS.css variable depending on class

...然而,对于我想做的事情来说,它似乎仍然过于复杂,因为我仍然必须写出所有选择器并在使用颜色变量放入相同的 CSS 之前包含混合。

我创建了一个 CODEPEN HERE

如果有人有时间看一下并建议我如何以不同的方式处理此问题或如何简化此过程,我将不胜感激。

非常感谢任何提供帮助的人:)

最佳答案

假设您仍然希望在一个样式表(而不是评论中提到的 cimmanon 的多个工作表)中对其进行主题化,并且假设您使用的是 LESS 1.3.2+,那么以下代码可以减少重复的数量通过在需要主题更改的类中设置循环。

请注意,这在 Codepen 上不起作用(它会抛出错误 uncaught throw #,可能是因为它们运行的​​是较早版本的 LESS),但是您可以通过将编码为 LESS's compiler .

LESS(基于您的 Codepen 代码并添加了演示主题)

//////////////////////////////////////////////////////
// CONSTANTS

@lightColour: #fff;
@darkColour: #000;
@lightBg: #fff;
@darkBg: #000;
@numberOfThemes: 3; //controls theme loop

//////////////////////////////////////////////////////
// MIXINS

//Theme Definitions by parametric mixin numbers (1), (2), etc.
.themeDefs(1) {
@lightColour: #f00;
@darkColour: #fff;
@lightBg: #f00;
@darkBg: #fff;
}

.themeDefs(2) {
//inverse of 1
@lightColour: #fff;
@darkColour: #f00;
@lightBg: #fff;
@darkBg: #f00;
}

.themeDefs(3) {
@lightColour: #cfc;
@darkColour: #363;
@lightBg: #cfc;
@darkBg: #363;
}


.curvy {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}

//////////////////////////////////////////////////////
// GENERAL STYLING

* {padding: 0;margin: 0;}
html {text-align: center;}
h2 {padding: 20px 0;}

.box {
.curvy;
color: @lightColour;
background: @darkBg;
display:inline-block; width:10%; padding:20px 5%; margin:0 1% 20px 1%;
}

//////////////////////////////////////////////////////
// THEME BUILDING

.buildThemes(@index) when (@index < @numberOfThemes + 1) {

.theme-@{index} {
.themeDefs(@index);
color: @lightColour;
background: @darkBg;

.box {
color: @darkColour;
background: @lightBg;
}
}
.buildThemes(@index + 1);
}
//stop loop
.buildThemes(@index) {}
//start theme building loop
.buildThemes(1);

CSS 输出(为简洁起见仅显示循环主题 css)

.theme-1 {
color: #ff0000;
background: #ffffff;
}
.theme-1 .box {
color: #ffffff;
background: #ff0000;
}
.theme-2 {
color: #ffffff;
background: #ff0000;
}
.theme-2 .box {
color: #ff0000;
background: #ffffff;
}
.theme-3 {
color: #ccffcc;
background: #336633;
}
.theme-3 .box {
color: #336633;
background: #ccffcc;
}

关于css - LESS CSS - 根据主体类别更改主题颜色的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15275829/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com