javascript - less.js 延迟工作表加载

标签 javascript less

我想知道是否有办法加载单个 less页面加载后的某个时间。 This question有一个解释如何重新加载所有工作表的答案,但对于我的用例,现有工作表永远不会依赖于新加载的工作表,最好只是懒惰地添加工作表。我在想类似的事情

less.sheets.push(mySheet);
less.loadStyleSheet(mySheet);

可能代表一个可能的 API?干杯,

科林

2010 年 12 月 3 日更新:

我已经尝试了 Livingston Samuel 对 less.js 代码库的修复,虽然它确实有效,但它似乎无法识别已加载样式表中的定义。这是我的示例文件

一个。 index.html

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Simple</title>

  <link rel="stylesheet/less" href="/static/less/style.less" id="abc123"/>
  <script src="/static/js/less-1.0.40.js"></script> 
</head>
<body>
  <div id="container">
    <div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>
  </div>
  <div id="abc"><div>Bingo</div></div>
</body>

<script>
console.log("loading new sheet");
less.loadStyleSheet("/static/less/style2.less", function() {
    console.log("Loaded!"); 
});

console.log("called");

</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;
  }
}

style2.less

#abc {
  background: @primary_color;
  .rounded(10px);

  div {
    margin: 2px;
    color: blue;
  }
}

所以第二个样式表确实延迟加载,但是在style2.less中有如下解析错误

“四舍五入是未定义的”

.rounded 被定义为 style.less,并且由于我还没有卸载该工作表,所以我认为它在当前环境中应该仍可用于编译器。

换句话说,我们不想重新开始,也不想卸载现有的定义,而是在已经加载的样式上构建。谢谢,

科林

最佳答案

我无法通过上面的解释来解决这个问题,所以我将提供自己的解释。

那么首先。在页面加载后加载 Less 样式表。像这样:

$('head').append('<link rel="stylesheet/less" href="path/to/yourDynamicStyles.less" />');

太棒了。现在选择您的样式表并将其推送到 Less.js 已有的表单集合中。它需要一个 DOM 对象,所以我使用了 jQuery 选择器。

less.sheets.push($('link[href="path/to/yourDynamicStyles.less"]')[0]);

如果有人知道更好的方法,请教我。 (我必须添加 [0] 才能使其正确。)如果您在控制台中执行此操作,它将返回一个数字。这个数字是较少知道的页数,因此希望它返回的数字高于您在页面加载时已经拥有的数字。

下一部分很简单。你告诉 Less.js 重新加载它所有的 lessy goodness 工作表,这包括你刚刚添加到它的堆栈中的工作表。

less.refresh();

好了。那应该只是动态加载一个样式表并告诉 Less 编译它。希望这会有所帮助。

关于javascript - less.js 延迟工作表加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204317/

相关文章:

json - 在 Visual Studio 中使用 Web Essentials 编译 LESS 错误 - 无法调用未定义的方法 'toJSON'

javascript - DIV的onclick中的alert()点击后不显示

javascript - Angular.js aHrefSanitizationWhitelist 不工作?

javascript - 将信息添加到按钮上的 txt 文件单击 ASP.NET

css - 使用 less 的计算例程

css - Chrome 和媒体查询错误

javascript - 危险的刷卡器不刷卡

javascript - 使用 Ajax 和 Bootstrap Modal 进行 Laravel 表单验证问题

ubuntu - 我如何在 ubuntu 中安装 npm 以运行更少的 js

css - 嵌套和非嵌套规则的 LESS mixin