Comment utiliser les sprites CSS

10 Commentaires

Récemment j’ai créé un nouveau site internet et j’avais pour objectif de le rendre le plus rapide possible. Une solution à ce problème est d’utiliser les sprites CSS qui permettent de diminuer le nombre d’images et de requêtes.
Le concept est simple, plutôt que d’utiliser plusieurs fichiers pour gérer des images, on réunit toutes nos images, les unes à côté des autres, dans un seul et unique fichier. Ensuite on utilise la propriété background-position pour afficher seulement une partie de notre grosse image (le sprite).

La plupart des gros sites utilisent ce concept pour des raisons d’optimisations, voici quelques exemples provenant de google, facebook et youtube :

Voici le tutoriel vidéo suivi de quelques explications supplémentaires, suivi du code utilisé :

En résumé voici les idées essentielles de ce tutoriel :

  • Ne pas négliger l’image et être le plus précis possible. S’il y a des décalages de quelques pixels dans l’image, ça se répercutera sur votre site. Pour cela vous pouvez utiliser des guides(comme ça) dans photoshop ou the Gimp (accessible en affichant les règles).
  • On appelle également les sprites des portes coulissantes. Ce nom résume bien le concept, ce n’est qu’une question de math et de décalage (c’est d’ailleurs pour cela que les valeurs sont négatives).
  • Les sprites permettent d’avoir un site plus rapide et d’éviter le phénomène de scintillement, car une seule image est utilisé.
  • De manière générale une image sprite pèsera moins que la somme de l’ensemble des images prises à part (les méta-données n’étant pas répétés).
  • N’oubliez pas de mettre un id sur chaque élément distinct du menu. Vous pouvez faire plus simple en créant un sprite avec 2 images : un background normal et un background au survol puis en affichant le texte par-dessus (« effet bouton web 2.0″).
  • N’oubliez d’adapter le code CSS avec votre sprite, dans la vidéo j’avais des images de 32×32 px mais ce n’est pas toujours le cas !! (j’anticipe les problèmes via les commentaires)

Voici les codes utilisés dans la vidéo ainsi que sur la page de démonstration :

Le menu en HTML :

		<ul class="menu">
			<li><a href="#" title="Test 1" id="yt"><span>Texte 1</span></a></li>
			<li><a href="#" title="Test 2" id="rss"><span>Texte 2</span></a></li>
			<li><a href="#" title="Test 3" id="fb"><span>Texte 3</span></a></li>
			<li><a href="#" title="Test 4" id="tw"><span>Texte 4</span></a></li>
		</ul>

Le code CSS qui va avec :

.menu{width:248px; margin:auto; list-style:none;}
	.menu li{float:left; margin:0px 30px 0 0;}
	.menu a{text-indent:-5999px;}
	.menu span{display:block; width:32px; height:32px;}
	.menu #yt span {background:url('sprite-tuto.png') 0 0 no-repeat;}
	.menu #yt span:hover {background:url('sprite-tuto.png') 0 -32px no-repeat;}
	.menu #rss span {background:url('sprite-tuto.png') -32px 0 no-repeat;}
	.menu #rss span:hover {background:url('sprite-tuto.png') -32px -32px no-repeat;}
	.menu #fb span {background:url('sprite-tuto.png') -64px 0 no-repeat;}
	.menu #fb span:hover {background:url('sprite-tuto.png') -64px -32px no-repeat;}
	.menu #tw span {background:url('sprite-tuto.png') -96px 0 no-repeat;}
	.menu #tw span:hover {background:url('sprite-tuto.png') -96px -32px no-repeat;}

Vous pouvez également télécharger la vidéo en cliquez sur ce lien : télécharger le tutoriel.

N’hésitez pas à poser des questions, mais n’oubliez pas de faire une petite recherche sur Google avant :) et puis vous pouvez rejoindre la page facebook ça me fera plaisir !

Tagué avec : , , , , ,

Publié le 4 mai 2011 par Madrzejewski Alexis dans Développement web

Vous avez aimé ce billet ?

Inscrivez-vous au Flux RSS du blog, suivez-moi sur Twitter ou partager simplement cet article avec vos amis sur Twitter ou Facebook

Inscrivez-vous à la newsletter

Inscrivez-vous à la newsletter en précisant votre prénom et votre adresse email pour recevoir les dernières mises à jour du blog et des tutoriels exclusif par email (En savoir plus)

Je vous recommande aussi la lecture des sujets suivants :

10 commentaires

Ajouter un commentaire

  1. Pingback: Optimiser le chargement des images en utilisant les Sprites CSS | CodesScripts.fr Tutoriels vidéo

  2. Salut, alex j’ai vu ton tutoriel et franchement je suis vraiment content mais je pense qu’il y a une erreur le 0 ne se situe pas sur la gauche mais tout en haut à droite ^^ sinon sa ne serait pas
    -32px mais 32px tu comprend ce que je veut te dire ?

    Répondre
  3. Salut,
    Yep je comprend mais je ne pense pas que ça change grand chose tant que tu comprends le principe :)
    Pour retenir l’histoire des valeurs négative, je me dis que c’est un décalage et je retiens facilement.

    Répondre
  4. Pingback: Quelques astuces pour rendre votre site internet plus rapide | Tutoriels-Video

  5. Salut,

    Très bon tuto et merci :)

    Et pour les valeurs négatives se seraient pas un rapport avec l’axe des X et des Y ?

    x^
    |
    |
    0—>
    y

    Et donc comme on descend c’est normale que ce soit négatif.

    Répondre
  6. Bonjour François,

    En effet c’est possible que je me soit tromper au niveau des axes. En tout cas, si ta technique t’aide à comprendre pourquoi c’est négatif tant mieux :-)
    Après, une fois qu’on a compris la technique ça va tout seul et en plus il existe des outils qui génèrent les sprites et le code automatiquement (j’aurais sûrement du en parler dans la vidéo d’ailleurs).

    Répondre
  7. youssefand1

    Bonjour tout le monde
    j’ai télécharger les tous les vidéos que vous avez posté dans votre site et ils sont vraiment impressionnant,je vous remercie infiniment.
    Ce que je vous demande est ce qu’il y a un fichier zip où je trouverais les codes pour continuer à suivre les vidéos?????

    Répondre
  8. Athen3

    Sérieux, tu fait du bon boulot.
    Tes vidéos sont simpas et bien expliqués.
    Tip top : Continue

    Répondre
  9. Vincent.V

    Merci pour cette vidéo très instructive, je bookmark :p

    Répondre

Ajouter un commentaire


Ici les commentaires sont en DoFollow, profitez-en mais en abusez pas !
Veuillez ne pas poster de code (php, html ou autre) car il sera bloqué par le site.
Les commentaires ne sont pas immédiatement validés.
Merci de faire une recherche sur Google avant de poser une question.