異步加載CSS的方法有哪些

這篇文章主要介紹“異步加載CSS的方法有哪些”,在日常操作中,相信很多人在異步加載CSS的方法有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”異步加載CSS的方法有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

在祿豐等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站開(kāi)發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷推廣,外貿(mào)網(wǎng)站制作,祿豐網(wǎng)站建設(shè)費(fèi)用合理。

在我們寫頁(yè)面的時(shí)候,我們做最主要的任務(wù)就是提高頁(yè)面的性能和彈性加載速度,以不會(huì)延遲頁(yè)面的呈現(xiàn)的形式來(lái)加載CSS。這是因?yàn)樵谀J(rèn)情況下,

- 瀏覽器會(huì)同步加載外部的CSS

- 在下載和解析CSS時(shí)會(huì)影響所有頁(yè)面呈現(xiàn)

這兩種情況都會(huì)導(dǎo)致潛在的延遲。

當(dāng)然,這也是在開(kāi)始渲染頁(yè)面之前,應(yīng)該至少加載網(wǎng)站的CSS的一部分,并且為了立即將該初始CSS添加到瀏覽器,我們建議內(nèi)聯(lián)css。對(duì)于整體數(shù)量較少的網(wǎng)站,僅此一項(xiàng)就足夠了,但如果CSS很大(例如,大于15到20kb),它可以幫助性能按優(yōu)先級(jí)將其拆分。拆分后,應(yīng)該在后臺(tái)-aka中加載不太關(guān)鍵的CSS異步。在這篇文章中,我的目的是描述我在這些日子的首選方式,這實(shí)際上已存在很長(zhǎng)的時(shí)間段了。

有幾種方法可以異步加載CSS,但沒(méi)有一種方法可以像您期望的那樣直觀。與script元素不同,沒(méi)有async或defer屬性可以簡(jiǎn)單地應(yīng)用于link元素,因此多年來(lái)我們維護(hù)了loadCSS項(xiàng)目,使得加載異步CSS的過(guò)程更加容易。最近,瀏覽器已經(jīng)標(biāo)準(zhǔn)化了它們的CSS加載行為,因此可能不再需要像loadCSS這樣的專用腳本來(lái)處理它們的微小差異。

今天,我們掌握了瀏覽器如何處理各種link元素屬性的一些知識(shí),我們可以通過(guò)一小段HTML來(lái)實(shí)現(xiàn)異步加載CSS的效果。在這里,它是異步加載樣式表的最簡(jiǎn)單方法:

<link rel="stylesheet" href="/styles/index.css" media="print" onload="this.media='all'">

這行HTML簡(jiǎn)潔,但它不是很直觀,所以讓我們分解這里發(fā)生的事情。

首先,將link's media屬性設(shè)置為print?!按蛴 笔且环N媒體type,它說(shuō)“應(yīng)用此樣式表的基于打印的媒體的規(guī)則”,換句話說(shuō),當(dāng)用戶嘗試打印頁(yè)面時(shí)應(yīng)用它們。不可否認(rèn),我們希望我們的樣式表適用于所有媒體(尤其是屏幕)而不僅僅是打印,但通過(guò)聲明與當(dāng)前環(huán)境不匹配的媒體類型,我們可以實(shí)現(xiàn)一個(gè)有趣且有用的效果:瀏覽器將加載樣式表沒(méi)有延遲頁(yè)面渲染,異步!這很有幫助,但并不是我們想要的全部。我們還希望CSS在加載后實(shí)際應(yīng)用于屏幕環(huán)境。為此,我們可以使用該onload屬性將link媒體設(shè)置為all完成加載。

介紹完了老方子,我們?cè)賮?lái)看看新藥方,是的,同樣的!在過(guò)去一兩年中,我們一直在使用link[rel=preload](而不是rel=stylesheet)來(lái)實(shí)現(xiàn)與上面類似的模式(分別rel在加載后切換屬性而不是media屬性)。使用這種方法仍然可以正常工作,但是,使用時(shí)需要考慮幾個(gè)缺點(diǎn)preload。首先,瀏覽器對(duì)于加載的支持依舊不是特別的好因此如果你想依賴它來(lái)跨瀏覽器獲取和應(yīng)用樣式表,那么填充(例如一個(gè)loadCSS)是必要的。更主要的是,preload盡可能早地獲取文件,優(yōu)先級(jí)最高,可能會(huì)優(yōu)先考慮其他重要下載,并且可能比非關(guān)鍵CSS實(shí)際需要的優(yōu)先級(jí)更高。

幸運(yùn)的是,如果你碰巧想要提供的高優(yōu)先級(jí)提取rel=preload(在支持它的瀏覽器中),你可以將它與上面的模式結(jié)合起來(lái)。

<link rel="preload" href="styles/index.css" as="style" onload="this.rel='stylesheet'">

這和之前的方法沒(méi)什么區(qū)別??!是的確實(shí)如此,但是呢,語(yǔ)法上更加好一些。另外就是你仔細(xì)點(diǎn)就會(huì)發(fā)現(xiàn) as="style"這個(gè)屬性,所以 preload 不僅僅可以用在 CSS 文件上,而是可以用在絕大多數(shù)的資源文件上。

<link rel="preload" href="styles/index.css" as="script">

我們可以新建一個(gè)script標(biāo)簽來(lái)指向它:

var script = document.createElement("script");

script.src = "scriptfile.js";

document.body.appendChild(script);

在這個(gè)時(shí)候?yàn)g覽器就直接從緩存中拿這個(gè)文件了,不會(huì)再發(fā)請(qǐng)求了,因?yàn)榇饲耙呀?jīng)加載好了。

那么 preload 中的 as 屬性支持哪些資源文件呢?下面這些都可以

  • font

  • image

  • object

  • script

  • style

不要想太多,只有谷歌太對(duì)它做出完美的支持。

異步加載CSS的方法有哪些

也可以用JavaScript來(lái)實(shí)現(xiàn):

$(window).load(function () {

    //異步延遲加載樣式

    var link = $('<link />');

    link.attr('href', '/styles/index.css');

    link.attr('rel', 'stylesheet');

    link.appendTo($('head'));

    link.load(function () {

        console.info('加載成功...');

    });

到此,關(guān)于“異步加載CSS的方法有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

文章名稱:異步加載CSS的方法有哪些
鏈接地址:http://muchs.cn/article48/ighiep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、用戶體驗(yàn)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)