2017-02-03 14 views
-5

私の写真をアップロードします。ページの洞察は、私のCSSファイルが私のサイトのダウンロードを遅くしていると常に言います。CSSファイルをJavaScriptに含める

解決策は何ですか?これらのファイルをjavascriptまたは非同期モードでどのように追加する必要がありますか?

JSファイルも、jQueryのように、ページの下部にあるボディークローズタグにあります。

enter image description here

+3

テキストのスクリーンショットを含めるのではなく、そのメッセージのテキストを質問に追加する必要があります。その画像は読みにくく、ここに「画像の説明を入力」しても、盲目のユーザーはまったく役に立ちません。 – BSMP

+0

https://github.com/filamentgroup/loadCSS/をお試しください。動的にスタイルを読み込む場合は、htmlの頭の部分で重要なスタイル(スクロールする前に目に見える部分)をインライン化することをお勧めします。最初の訪問時にスタイルのないコンテンツが表示されることはありません。 – Davey

+0

私はそれを試してみましたが、私はそれを理解していません。このライブラリからどのファイルを含めるべきですか?私はsrcフォルダからloadcssファイルをインクルードしましたが、エラーメッセージが出ます。そのloadCSS関数は存在しません。 – Dave599

答えて

0

CSSリソースがデフォルトでブロックされ、ブラウザがページをレンダリングする前に利用できるようにするコンテンツを待ちを意味します。これを避けるには、あなたのHTMLファイルの最後にリンクタグを置いてみてください。次に役に立つのは、メディアタイプを削除することです。このように、ブラウザはファイルをロードしますが、待機しません。

<link rel="stylesheet" 
    href="css.css" 
    media="none" 
    onload="if(media!='all')media='all'"> 

または、完全なソースを非同期に読み込みます。あなたのhtmlファイルの最後にこのような何かを行うことができ、更なるLIBなし:

(function() { 
    // caniuse requestAnimationframe? 
    var raf = window.RequestAnimationFrame || 
     window.mozRequestAnimationFrame || 
     window.webkitRequestAnimationFrame || 
     window.msRequestAnimationFrame; 

    // defer loading of all non criticial CSS 
    function deferLoad() { 

    // put all relevant styles here 
    var asyncStyleSheets = [ 
     '/stylesheets/async-stylesheet-1.css', 
     '/stylesheets/async-stylesheet-2.css' 
    ]; 

    var head = document.getElementsByTagName('head')[0]; 

    for (var i = 0; i < asyncStyleSheets.length; i++) { 
     var link = document.createElement('link'); 
     link.rel = 'stylesheet'; 
     link.href = asyncStyleSheets[i]; 
     head.appendChild(link); 
    } 
    } 

    if (raf) { 
    raf(deferLoad); 
    } else if (window.addEventListener) { 
    window.addEventListener("load", deferLoad, false); 
    } else if (window.attachEvent) { 
    window.attachEvent("onload", deferLoad); 
    } else { 
    window.onload = deferLoad; 
    } 
})(); 

しかし、あなたは重要な部分であなたのCSSを分割する可能性があることに注意してください(ページをレンダリングする前にそこにする必要がある)と、最初の装填の後に装填することができる非 - 密封部分。

+0

しかし、私は約3-4 cssファイルを追加したいと思います。そして、このjsスクリプトは私のページをスピードアップしますか? – Dave599

+0

@ Dave599すべてのCSSを1つのファイルに圧縮することをお勧めします。リソースを読み込むと、最初のレンダリングが高速化されます。私は私の答えを更新しました –

+0

loadCSS( "css/font-awesome.min.css"); loadCSS( "css/bootstrap.min.css"); loadCSS( "css/jquery.bxlider.css"); loadCSS( "css/style.css"); これら3つのCSSファイルを1つだけ作成する必要がありますか? – Dave599

関連する問題