Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URL's added here will be added as <link>s in order, and before the CSS in the editor. If you link to another Pen, it will include the CSS from that Pen. If the preprocessor matches, it will attempt to combine them before processing.

+ add another resource

JavaScript

Babel is required to process package imports. If you need a different preprocessor remove all packages first.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Behavior

Save Automatically?

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                <link href="http://sparkx.online/secondary.css" rel="preload" as="style"/><!--not placed inside <HEAD> for purpose of this demo-->

<style id="critical">/*immediate cyan background by internal css*/
  body {background-color:cyan}
</style>

<div>
<h1>Triggering a Javascript/jQuery event after CSS has loaded .. AND RENDERED</h1><p>The above code presents a way to <b>remove critical CSS (&#x3C;style&#x3E; element) from HTML after being 100% sure, that external sheets have lazyloaded and rendered</b>.</p><p>This allows using universal, yet visually pleasing critical internal CSS globally over several projects.</p><p>Since some of the critical styles go visually against the lazyloaded ones,  so they need to be overridden (too much work), or removed. This is what happens with the second option:<ol><li>The document with critical internal CSS loads</li><li>Additional CSS is loaded after the document is rendered and interactive (good for SEO and UX)</li><li>Critical CSS is removed from HTML after the fancy additional <b>stylesheets have been loaded and truly rendered</b>.</li></ol><p>Using <i>setInterval();</i> to periodically check, whether a style, unique to secondary CSS, has truly been applied is a 100% working solution (may it be unpopular).</p><p>There are other solutions available, but only this one <b>prevents flickering which occured when the CSS is being manipulated</b> (lot of testing done on this). Check out more on this <a href="https://sparkx.online/triggering-javascript-jquery-after-css-has-loaded/" target="_blank">here</a> or alternatives in this   <a href="https://stackoverflow.com/questions/2571164/jquery-event-that-triggers-after-css-is-loaded/51267013" target="_blank">Stack Overflow post</a>.</p>

<p id="result">This paragraph will change to display loading time of external CSS.</p>
</div>

<!--loading jQuery-->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<!--Changing "preload" to "stylesheet", to load external CSS. Wrapped in a 3 second setTimeout, to make the change visible -->
<script>
  setTimeout(function() {
$('*[rel="preload"]').attr("rel", "stylesheet");
    },3000); 
</script>

<!--Checking for CSS change, changing text of last <p>, when after it occurs. -->
<script> 
var i = 0;  
var CSSloadcheck = setInterval(function () {
  i++;
    if ($('body').css('opacity') != 1) {
    //when opacity is set to 0.99 by externatl sheet
	  $('style#critical').remove();
	  $('p#result').html('Critical CSS was removed after roughly ' + i*100 + "ms. Also, as a result, this paragraph changed and so did backround color - from cyan to orange.");
	  clearInterval(CSSloadcheck);  
      console.log(i);
  }
}, 100);
</script>

              
            
!

CSS

              
                
              
            
!

JS

              
                
              
            
!
999px

Console