I've built an image slider (based on the terrific bxSlider) which will preload images just-in-time before they slide into view. It's working pretty well already, but I don't think my solution is valid HTML.
My technique is as follows: I generate the slider markup with the first slide image being inserted as usual (with an <img src="foo.jpg">
) and subsequent images being referenced in a data attribute like <img data-orig="bar.jpg">
. A Javascript then juggles the data-orig -> src
change when necessary, triggering the preloading.
In other words, I have:
<div class="slider">
<div><img src="time.jpg" /></div>
<div><img src="data:" data-orig="fastelavn.jpg" /></div>
<div><img src="data:" data-orig="pels_strik.jpg" /></div>
<div><img src="data:" data-orig="fashion.jpg" /></div>
</div>
To avoid empty src=""
attributes (which are harmful to performance in some browsers), I've inserted src="data:"
to effectively insert a blank image as a placeholder.
The thing is, I can't seem to find anything in the documentation for data-URI saying whether this is a valid data-URI or not. I basically want the minimal data-URI that resolves to a blank/transparent image, so the browser can resolve the src immediately and move on (with no error or network request). Maybe src="data:image/gif;base64,"
would be better?
I looked into it and the smallest possible transparent GIF image, encoded as a data-uri, was this:
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
which is what I'm using now.