Search code examples
javascripthtmlcssgoogle-pagespeeddeferred-loading

CSS delivery optimization: How to defer css loading?


I am trying to optimize the CSS delivery following the google documentation for developers https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery#example

As you can see in the example of inlining a small CSS file the critical CSS in inlined in the head and the original small.css is loaded after onload of the page.

<html>
  <head>
    <style>
      .blue{color:blue;}
    </style>
    </head>
  <body>
    <div class="blue">
      Hello, world!
    </div>
  </body>
</html>
<noscript><link rel="stylesheet" href="small.css"></noscript>

My question regarding this example:

How to load a large css file after onload of the page?


Solution

  • If you don't mind using jQuery, here is a simple code snippet to help you out. (Otherwise comment and I'll write a pure-js example

    function loadStyleSheet(src) {
        if (document.createStyleSheet){
            document.createStyleSheet(src);
        }
        else {
            $("head").append($("<link rel='stylesheet' href='"+src+" />"));
        }
    };
    

    Just call this in your $(document).ready() or window.onload function and you're good to go.

    For #2, why don't you try it out? Disable Javascript in your browser and see!

    By the way, it's amazing how far a simple google search can get you; for the query "post load css", this was the fourth hit... http://www.vidalquevedo.com/how-to-load-css-stylesheets-dynamically-with-jquery