jQuery Preload CSS Images

Sam Deering

This is a useful way of pre-loading css images before rendering JavaScript/jQuery animation for example. This Script is a little jQuery plugin that caches all images referenced in linked/imported CSS files (it iterates through each rule in each stylesheet attached and if the rule’s value contains an image URL, it loads the image, thus ensuring it’s available in the cache when used in the document.

The Preload CSS Images Function

jQuery.preloadCssImages = function(){

	var allImgs = [];//new array for all the image urls  
	var k = 0; //iterator for adding images
	var sheets = document.styleSheets;//array of stylesheets

	for(var i = 0; i<sheets .length; i++){//loop through each stylesheet

		var cssPile = '';//create large string of all css rules in sheet
		var csshref = (sheets[i].href) ? sheets[i].href : 'window.location.href';
		var baseURLarr = csshref.split('/');//split href at / to make array

		baseURLarr.pop();//remove file path from baseURL array

		var baseURL = baseURLarr.join('/');//create base url for the images in this sheet (css file's dir)

		if(baseURL!="") baseURL+='/'; //tack on a / if needed


			var thisSheetRules = document.styleSheets[i].cssRules; //w3

			for(var j = 0; j<thisSheetRules.length; j++){
				cssPile+= thisSheetRules[j].cssText;
		else {
			cssPile+= document.styleSheets[i].cssText;

		//parse cssPile for image urls and load them into the DOM
		var imgUrls = cssPile.match(/[^(]+.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "(" and a ".filename"

		if(imgUrls != null &amp;&amp; imgUrls.length>0 &amp;&amp; imgUrls != ''){//loop array

			var arr = jQuery.makeArray(imgUrls);//create array from regex obj        

				allImgs[k] = new Image(); //new img obj
				allImgs[k].src = (this[0] == '/' || this.match('http://')) ? this : baseURL + this;     //set src either absolute or rel to css dir
	return allImgs;


//preload only

//load into array
var preloadedImgs = $.preloadCssImages();

This is the array of images!


Free JavaScript: Novice to Ninja Sample

Get a free 32-page chapter of JavaScript: Novice to Ninja

  • Jeremy

    Thanks for this script, but how can i get the list of all images?

    • jquery4u

      @Jeremy – The list of all image is stored in variable imgUrls. Cheers

  • Ethan

    Uncaught SyntaxError: Unexpected token ; jquery.preloadCssImages.js:34

    • Kumroi

      if(imgUrls != null && imgUrls.length>0 && imgUrls != ”)

      Change && for the apropriate char &&

      • kumori

        “& amp ; ” i mean…

        • Alexvb6

          You also need to replace < by <

          • Alexvb6

            I mean you need to replace “& lt ;” by <

  • Carla

    Sam, this executes successfully, but my rollovers still aren’t loaded.

  • http://scriptogr.am/rafaelcastrocouto rafæl

    Exactly what I was looking for … thx a lot for sharing …