我正在尝试使用less.js通过 JavaScript 动态修改 LESS 变量。但是,我似乎无法让它与modifyVars
,watch
或refresh
.
我尝试在加载less.js之前放置样式表链接标签,使用less.modifyVars({'@bg': '#00ff00'})
,但背景没有发生变化。我使用的 less 文件很简单:
@bg: #000;
body { background-color: @bg; }
我还尝试将样式表链接标记放在less.js 之后,如this question中所述,然后使用less.sheets.push($('#less-link')[0])
调用modifyVars
然后调用refresh
。背景颜色没有变化。
我还尝试在 LESS 文件中注释掉@bg: #000;
,然后通过modifyVars
. 不走运:我最终得到一个Less::ParseError: variable @bg is undefined
.
如何动态更改 LESS 变量并更新页面外观以反映这些更改?
编辑:嗯,这可能是一些 Rails 魔术正在发生。当我加载我的 less 文件时,变量定义消失了,我看到的只是body { background-color: #000; }
. 当我切换到使用<style type="text/less">
嵌入在页面中的 LESS 块并使用此覆盖 LESS JavaScript时,我能够更改变量,less.Override('@bg', '#00ff00')
并且页面的背景颜色立即更改。感谢这个答案。现在,我将使用<style>
标签而不是.js 来尝试使用<link>
less.js。
编辑:看起来 less-1.3.3.min.js 希望 LESS 被加载到link
标签中——TypeError: Cannot read property 'href' of undefined
当我尝试使用时我得到了modifyVars
,我的页面看起来像这样:
<style type="text/less">
@bg: #000;
body {
background-color: @bg;
}
</style>
<script src="/assets/less-1.3.3.min.js?body=1" type="text/javascript"></script>