【发布时间】:2021-07-30 03:49:53
【问题描述】:
我想创建一个简单的脚本来更改 LESS 变量并在 div 中打印 CSS 输出。
这是我的 HTML
<input type="text" id="choose-color" onchange="ModifyColorsInLess()">
<button onclick="writeCSS()">aggiorna</button>
<div id="lesscode"></div>
这是我的 js
function writeCSS(){
var lessCode = '';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if(xmlhttp.status === 200 && xmlhttp.readyState === 4){
lessCode = xmlhttp.responseText;
new(less.Parser)().parse(lessCode, function (e, tree) {
document.getElementById('lesscode').innerHTML = tree.toCSS().replace(/\n/g,"<br>");
});
}
};
xmlhttp.open("GET","css/styles.less",true);
xmlhttp.send();
}
function ModifyColorsInLess() {
less.modifyVars(
{
'@colore-body': $("#choose-color").val()
}
);
}
脚本正确打印 CSS 代码,但如果我在输入 type="text" 中插入新颜色值并调用 writeCSS 函数,它不会打印我的变量编辑。 我认为问题在于“modifyvar”不会更改文件“styles.less”,所以当我调用函数 writeCSS() 时不会检测到所做的更改。 有没有办法打印 css 动态检测使用 modifyvar 所做的更改?
【问题讨论】:
-
在您的 sn-p 中,
modifyVars选项应传递给parse函数 (see for example)。全局less对象的modifyVars仅适用于该全局less在页面加载时自动评估的那些较少文件。new(less.Parser)()对象实际上是一个 new 解析器对象,它没有从文档的全局less继承任何内容。 -
我是 less.js 的新手...如何使用您的建议重写我的脚本?
-
某事like this 可能(未优化)。我实际上并没有测试它是否有效(我只是没有任何 Less 1.x 沙箱,因为我刚刚切换到 v2.x))。
标签: javascript jquery css less