我正在使用less。js(看起来很棒),但我们的网站要求在初始页面加载后动态加载某些样式。但是,似乎必须在less.js脚本加载之前加载所有LESS样式表。即这是有效的
<link rel="stylesheet/less" href="/static/less/style.less"/>
<script src="http://lesscss.googlecode.com/files/less-1.0.30.min.js"></script>
但是如果换行的话它会失败,firefox和chrome都不会尝试加载'style.less',除非它们被正确排序。订购要求在this tutorial中明确说明。
有没有办法在初始页面加载后加载较少的样式表?
请注意,this blog描述了“观看”功能 -
每当您保存LESS代码时都会自动刷新CSS
所以我希望在页面加载后可以添加一些LESS规则似乎是合理的。感觉就像我错过了什么。
干杯,
科林
更新:用于测试评论中描述的行为的代码(脚本后列出的样式表更少) -
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Simple</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="/static/js/less-1.0.31.min.js"></script>
<link rel="stylesheet/less" href="/static/less/style.less" id="abc123"/>
</head>
<body>
<div id="container">
<div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>
</div>
<div id="#abc">Bingo</div>
</body>
<script>
console.log("refreshing styles...");
less.sheets.push(document.getElementById('abc123'));
//var lessStyle = $("<style>#abc { color: blue; }</style>").attr("id", "less:static-less-style").attr("type", 'text/less');
//$("head").append(lessStyle);
less.refresh(true);
console.log("refreshed...");
</script>
</html>
和样式表
@primary_color: green;
.rounded(@radius: 5px) {
-moz-border-radius: @radius;
-webkit-border-radius: @radius;
border-radius: @radius;
}
#container {
background: @primary_color;
.rounded(5px);
div {
color: red;
}
}
答案 0 :(得分:29)
我只是推了1.0.31 - 它有一个方法:less.refreshStyles()
它会用<style>
重新编译type="text/less"
标签 - 尝试一下,让我知道它是否有效。< / p>
答案 1 :(得分:11)
感谢您提出这个问题 - 这对我帮助很大。我只是更新主题,以显示我如何动态添加CSS文件。
我使用了最新版本的LESS(1.3.3)。
var stylesheetFile = 'file.css';
var link = document.createElement('link');
link.rel = "stylesheet";
link.type = "text/less";
link.href = stylesheetFile;
less.sheets.push(link);
less.refresh();
答案 2 :(得分:2)
您可以将此轻量级(3k)库用于lazy load less / css and js files(免责声明:我是作者)。
这很简单:
lazy.load('/static/less/style.less');
它还可以接收回调,加载一些具有依赖关系的资产,并负责缓存。
答案 3 :(得分:0)
我找到了与LESS文件完美配合的脚本的最新版本:
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/3.0.0/less.min.js"></script>
代替使用
less.refreshStyles()
使用
less.refresh()