从 JS 更改 LESS 颜色变量
change LESS color variable from JS
我正在尝试使用 LESS 变量为 JQuery 分配背景颜色。
问题确实来自使用 LESS 变量,因为使用 RGB 或十六进制值非常有效。
我们可以要求 LESS 从 JQuery 或其他东西重新编译吗?
我目前正在编译 LESS 客户端,至少在生产时是这样。
$(document).ready(function() {
$('button:first-of-type').on('click', function() {
// What I can do:
$("main").css("background-color", 'rgb(154, 155, 234)');
// What I want to do:
$("main").css("background-color", "@bgColor1");
})
$('button:nth-of-type(2)').on('click', function() {
// What I can do:
$("main").css("background-color", "rgb(209, 255, 155)");
// What I want to do:
$("main").css("background-color", "@bgColor2");
})
});
// Using LESS here
@bgColor1 : rgb(154, 155, 234);
@bgColor2 : rgb(209, 255, 155);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Hello friend.</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<link rel="stylesheet/less" type="text/css" href="css/account.less"/>
<script src="js/less/less.min.js"></script>
<script src="js/account.js"></script>
</head>
<body>
<main>
<button id="btnUpdatePublicName"> color 1 </button>
<button id="btnChangePassword" type="button"> color 2 </button>
</main>
</body>
</html>
我也很喜欢这个功能!问题是你的 LESS 代码被编译成 CSS,它没有任何变量的概念。最简单的解决方案是为每种颜色创建 classes:
.bgColor1{
background-color: @bgColor1
}
然后使用 JQuery 添加这个 class:
$("main").addClass("bgColor1");
另一个值得考虑的答案是使用像 sass extract
这样的插件(不确定这是否适用,因为您使用的较少)。这将以结构化的方式提取编译类型的变量。
如果您非常需要这些变量,可能需要研究一下,但不会像创建 类 那样简单(就像我之前建议的那样)。
我正在尝试使用 LESS 变量为 JQuery 分配背景颜色。
问题确实来自使用 LESS 变量,因为使用 RGB 或十六进制值非常有效。
我们可以要求 LESS 从 JQuery 或其他东西重新编译吗?
我目前正在编译 LESS 客户端,至少在生产时是这样。
$(document).ready(function() {
$('button:first-of-type').on('click', function() {
// What I can do:
$("main").css("background-color", 'rgb(154, 155, 234)');
// What I want to do:
$("main").css("background-color", "@bgColor1");
})
$('button:nth-of-type(2)').on('click', function() {
// What I can do:
$("main").css("background-color", "rgb(209, 255, 155)");
// What I want to do:
$("main").css("background-color", "@bgColor2");
})
});
// Using LESS here
@bgColor1 : rgb(154, 155, 234);
@bgColor2 : rgb(209, 255, 155);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Hello friend.</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<link rel="stylesheet/less" type="text/css" href="css/account.less"/>
<script src="js/less/less.min.js"></script>
<script src="js/account.js"></script>
</head>
<body>
<main>
<button id="btnUpdatePublicName"> color 1 </button>
<button id="btnChangePassword" type="button"> color 2 </button>
</main>
</body>
</html>
我也很喜欢这个功能!问题是你的 LESS 代码被编译成 CSS,它没有任何变量的概念。最简单的解决方案是为每种颜色创建 classes:
.bgColor1{
background-color: @bgColor1
}
然后使用 JQuery 添加这个 class:
$("main").addClass("bgColor1");
另一个值得考虑的答案是使用像 sass extract
这样的插件(不确定这是否适用,因为您使用的较少)。这将以结构化的方式提取编译类型的变量。
如果您非常需要这些变量,可能需要研究一下,但不会像创建 类 那样简单(就像我之前建议的那样)。