J'ai construit un curseur d'image (basé sur le formidable bxSlider ) qui précharge les images juste à temps avant qu'elles ne glissent dans la vue. Cela fonctionne déjà plutôt bien, mais je ne pense pas que ma solution est un code HTML valide.
Ma technique est la suivante: je génère le balisage du curseur avec la première image de la diapositive insérée comme d'habitude (avec un <img src="foo.jpg">
) et les images suivantes référencées dans un attribut de données comme <img data-orig="bar.jpg">
. Un Javascript jongle alors le data-orig -> src
changez si nécessaire en déclenchant le préchargement.
En d'autres termes, j'ai:
<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>
Pour éviter les vides src=""
attributs (qui sont nuisibles à la performance dans certains navigateurs ), J'ai inséré src="data:"
pour insérer efficacement une image vierge en tant qu’espace réservé.
Le problème est que je n'arrive pas à trouver quoi que ce soit dans la documentation relative à l'URI de données indiquant s'il s'agit d'un identifiant de données valide ou non. Je veux fondamentalement l'URI de données minimal qui résout une image vide/transparente, afin que le navigateur puisse résoudre le problème immédiatement et continuer (sans erreur ni demande réseau). Peut être src="data:image/gif;base64,"
serait mieux?
J'ai regardé et la la plus petite image GIF transparente possible , encodée en tant que data-uri, était la suivante:
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
c'est ce que j'utilise maintenant.
si vous avez besoin d'une image transparente 1x1 pixel, définissez cette donnée comme uri avec l'attribut src
default
data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
c'est à la place un encodage base64 pour une image 1x1 blanche
data:image/gif;base64,R0lGODlhAQABAIAAAP7//wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
sinon vous pouvez définir data:null
et économisez environ 60 octets supplémentaires pour chaque image
données: image/gif; base64, R0lGODlhAQABAAAAACw =
data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"/>
Valable et hautement compressible. Essentiellement gratuit s'il y a un autre svg en ligne dans la page.
data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=
est plus petit: D
Image JPEG 1px par 1px
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKAP/2Q==
Le "gif blanc" de Fabrizio n'est pas réellement parfaitement blanc: c'est rgb(254, 255, 255)
.
J'utilise le suivant (qui se trouve être plus petit), trouvé sur cette page .
data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=