最近项目改用less,但是发现less在编译完less文件之前会让body的宽度为0,导致很多用js获取宽高的代码获取到 的都是0,请问有没有一个编译完less的事件可以侦听?
对了,我是浏览器端编译的
这是测试页面,打开控制台可以看到body的宽度一开始是0
http://wdzj1314.com/mobile/public/lesstest.html
什么叫“编译完之前让body宽度为0”?你在哪里编译,用什么工具编译的?
修正内容:
好吧,我简单谈下:
首先,运行时“编译less”是官方强烈不推荐的方式,这也是为什么关于less.js
的API文档都很少,因为真的太费时间。“编译”的操作应该在部署前完成,应用部署时就直接给css了。
其次,你说的那个编译完提醒的功能,目前真没有,我看到有人提了一个PR,因为没文档,所以我不敢保证他一定work,但应该是已经release了,用法如下:
less.registerStylesheets().then(
function () {
// The new stylesheets have been loaded.
// Now refresh() or modifyVars() to parse the changes.
less.refresh();
}
);
我把相关issues也给你列出来好了,方便你自己找How to tell when less is done processing,Method to scan for and register stylesheets
理论上来说,LESS 应该只会对 .less 文件的内容进行处理,处理成 css 之后插入到 <head>
中去,怎么会影响到 body 宽度呢。有没的有 $.ready()
中尝试过你的代码。如果你不用 jQuery,那就在 onload 里试试