less.js lazy sheet load

前端 未结 6 1159
天涯浪人
天涯浪人 2021-02-06 00:07

I\'m wondering if there is a way to load a single less sheet sometime after a page load. This question has an answer that explains how to reload all the sheets, but for my use-

6条回答
  •  梦如初夏
    2021-02-06 00:39

    I wasn't able to figure this out with the explanations above so I'll provide my own.

    So first. Load in your Less stylesheet after the page loads. Something like this:

    $('head').append('');
    

    Great. Now select your stylesheet and push it into the collection of sheets that Less.js already has. It is expecting a DOM object so I used a jQuery selector.

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

    If someone knows a better way to do that please educate me. (I had to add the [0] in order to get it to the right one.) If you do this in the console it will return a number. That number is how many sheets less knows about so hopefully it returned a number one higher then what you already had on page load.

    Next part is easy. You tell Less.js to reload all of it's lessy goodness sheets, this includes the sheet you just added to its stack.

    less.refresh();
    

    And there you go. That should have just dynamically loaded a stylesheet and told Less to compile it. Hope this helps.

提交回复
热议问题