CSS 樣式非同步載入
阿新 • • 發佈:2018-12-25
1.方法1,使用link標籤的media屬性(注:測試只有高版本的Google瀏覽器可以,FF,IE都失敗)
觸發非同步樣式下載的訣竅是使用一個 <link> 元素,並 為media 屬性設定一個不可用的值 (我用的是 media=”none”, 不過其它的任何值也是可以的)。當一個媒體查詢的結果值計算出來是 false 的時候,瀏覽器仍然會下載樣式表,但是不會在渲染頁面之前等待樣式表的資源可用。
<link rel="stylesheet" href="css.css" media="none">
樣式表一下載好,media 屬性就必須被設定一個可用的值,以便樣式規則能被應用到 html 文件中onload 事件就可以用來將 media 屬性切換到all:
<link rel="stylesheet" href="css.css" media="none" onload="if(media!='all')media='all'">
使用例項:
<link href="~/Content/font1.css" rel="stylesheet" media="none" id="fontLink" />
$('#fontLink').load(function () {
$(this).attr('media', 'all');
//地址,資料解析
handleUrlData();
});
2.方法2.延遲新增link標籤到頁面,這種方式比較相容
可以使用同樣原理,延遲載入JS
$(window).load(function () { //非同步延遲載入樣式 var link = $('<link />'); link.attr('href', '/Content/font1.css'); link.attr('rel', 'stylesheet'); link.appendTo($('head')); link.load(function () { console.info('載入成功...'); }); });