gpt4 book ai didi

css - 我如何否决混入中的 LESS 变量?

转载 作者:行者123 更新时间:2023-11-28 00:07:06 25 4
gpt4 key购买 nike

我现在正在我的一个元素中使用 LESS,我需要为不同的用户创建一些配色方案。我正在构建一个门户,根据登录的用户类型,配色方案需要更改。

所以在我的 mixins.less(我无法修改)文件中我有:

@color-button-bg: #333;
@color-button-txt: #fff;
@color-button-fs: 1.5rem;
@color-button-fw: 500;
@color-button-hover-pct: 10%;

.base-btn-default(@type: button) {
background: ~"@{color-button-bg}";
border: 1px solid ~"@{color-button-bg}";
color: ~"@{color-button-txt}";
font-size: ~"@{color-button-fs}";
font-weight: ~"@{color-button-fw}";
&:hover, &:focus {
@color-btn-hover: ~"color-button-bg";
@color-btn-hover-pct: ~"color-button-hover-pct";
background: darken(@@color-btn-hover,@@color-btn-hover-pct);
border-color: darken(@@color-btn-hover,@@color-btn-hover-pct);
color: ~"@{color-button-txt}";
}
}

在一个单独的文件中,我尝试了以下方法:

/* Override default color with theme-color */
.theme-styling() {
@color-button-bg: @main-theme-color;
}

最后我想在我的 <body> 中添加一个类根据该类名标记和设置颜色方案的样式:

body.theme-a {
#main-theme-color: teal;
.theme-styling();
}

但是,这似乎行不通。我认为这与范围界定/懒惰评估有关,但我在 LESS 方面还没有那么丰富的经验,看看我的错误在哪里。

我为它创建了一个 Codepen,没有单独的文件并且采用了一些简化的形式: https://codepen.io/jewwy0211/pen/JVNZPv

最佳答案

我刚刚试用了一下您的代码笔。当您在 mixin 中定义变量时,它确实有效,问题是您不会在 mixin 或包含 mixin 的类中使用该变量。

所以,如果你有 2 个这样的按钮:

<div class="wrapper one">
<button>Theme 1</button>
</div>

<div class="wrapper two">
<button>Theme 2</button>
</div>

您可以在它们各自的类中调用它们特定于主题的变量 mixins 来获取变量集,但是您必须在同一个类中使用变量:

.wrapper.one {
.theme-styling-1();
background-color: @color-button-bg;
}
.wrapper.two {
.theme-styling-2();
background-color: @color-button-bg;
}

/* Theme Vars */
.theme-styling-1() {
@color-button-bg: teal;
}
.theme-styling-2() {
@color-button-bg: red;
}

编辑:这是一个代码笔:https://codepen.io/mmshr/pen/OGZEPy

关于css - 我如何否决混入中的 LESS 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55635611/

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