Load CSS asynchronously without render blocking.
Install with npm
npm i import-css
or
yarn add import-css
import-css
contains 3 variants of importCSS
function
-
link.js
variant uses<link>
tag. If you want to import multiple styles for "progressive loading" recommended move all function calls before</body>
. -
link-and-body.js
also uses<link>
tag, but this variant a little lighter thanlink.js
because of restricted to use only in<body>
. -
xhr.js
obviously uses XMLHttpRequest to load styles. For earlier loading start recommended to call this function only in<head>
.xhr.js
variant loads styles fully async and more faster (if started at<head>
). But with<link>
variant you have possibilities to include styles from other hosts without CORS. In IE and Edgexhr.js
loads styles in parallel unlike<link>
variants.
critical css
section, footer {
display: none;
}
section.css
section {
display: block;
color: green;
}
footer.css
footer {
display: block;
color: red;
}
index.html
with link.js
<!DOCTYPE html>
<html>
<head>
<script>(link.js)</script>
<style>(critical css)</style>
</head>
<body>
<header>
<h1>Header</h1>
</header>
<section>
<h1>Section</h1>
</section>
<footer>
<h1>Footer</h1>
</footer>
<script>importCSS('section.css')</script>
<script>importCSS('footer.css')</script>
</body>
</html>
index.html
with xhr.js
<!DOCTYPE html>
<html>
<head>
<script>(xhr.js)</script>
<style>(critical css)</style>
<script>importCSS('section.css')</script>
<script>importCSS('footer.css')</script>
</head>
<body>
<header>
<h1>Header</h1>
</header>
<section>
<h1>Section</h1>
</section>
<footer>
<h1>Footer</h1>
</footer>
</body>
</html>