23/06/10

A peu près tout le monde connaît ce mot, "hover", qui permet de donner des propriétés différentes à un élément selon si on le survole de la souris ou non. Il peut s'insérer aussi bien dans le css qu'en HTML.
Justement, en HTML, il existe un code bien simple pour changer les propriétés d'une image au passage de la souris, sans utiliser de codes css ou de background-image :

<img border="0" onmouseout="this.src='adresse de la première image'" onmouseover="this.src='adresse de l'image au survol'" alt="" src="adresse de la première image" />

Voici un petit exemple :



Oui, mais. Dès que l'image devient un tout petit peu "lourde", on remarque un décalage entre le moment où on passe la souris et l'affichage de l'image. Ce retard n'apparaît que la première fois qu'on survole l'image, puisqu'ensuite elle est chargée. C'est tout de même un peu fâcheux. Exemple :


C'est pourquoi on préfèrera une autre technique (il en existe sûrement d'autres), légèrement plus contraignante que la précédente, mais plus efficace. Pas de chargement supplémentaire puisque les deux images n'en font en fait qu'une.
Voici les deux images sur lesquelles nous allons travailler :

http://cow-vault.cowblog.fr/images/DEMOS/imghover7.pnghttp://cow-vault.cowblog.fr/images/DEMOS/imghover8.png

Nous les assemblons pour n'en faire qu'une, avec l'image apparente en haut, et l'image "survol" en bas :

http://cow-vault.cowblog.fr/images/DEMOS/imghover6.png
On insèrera l'image de cette façon :

<div id="exemple"><img src="adresse de l'image" alt="" /></div>

Le nom de la balise (donc ici "exemple") peut être changé, il faudra juste choisir quelque chose d'inutilisé jusqu'à présent et d'assez explicite pour ne pas s'emmêler les pinceaux dans son css.

Justement, dans son css, on insérera ce code :

#exemple {
width:200px;
height:200px;
overflow: hidden;
}
#exemple img {
border: none;
}
#exemple:hover img {
margin-top: -200px;
}

200 et 200 sont bien sûr à adapter. Ils correspondent à la largeur (width) de l'image apparente, et à la hauteur (height) de cette même image (donc techniquement la moitié de l'image regroupant les deux).

Résultat :


Traduit, modifié et adapté d'ici.
Par PetrifiedEyes le 23/06/10
Tiens c'est pas con ça *-)
(Par contre il va falloir arrêter avec ces cieux étoilés jeune fille ! :o )
Par cafard-naum le 23/06/10
C'est la première chose qui m'a traversé l'esprit, çavahein çava, continue et la prochaine fois je me sers d'un petit chaton en illu'.
Par PetrifiedEyes le 30/06/10
Bah ouaip c'est bizarre, ici ça redimensionne l'image au lieu de la couper.
la seule différence, c'est que j'ai essayé de mettre le height:45px dans une balise #module img {}

T'as une idée ?
Par PetrifiedEyes le 30/06/10
Ouaip mais dans le module, ça me fait tout sauter, par contre chuis en train de me renseigner sur la commande CSS clip, je te tiens au courant.
Par PetrifiedEyes le 30/06/10
Ouais le clip en question il faut que l'image soit en position:absolute :/
Ca risque d'être coton cette histoire XD
Par Lucy-Westenra le 30/06/10
Bah ou sinon je crée une balise dans mon module comme tu l'as fait. J'ai pas essayé ça encore.
Par PetrifiedEyes le 30/06/10
(C'est moi au dessus)
Non mais j'ai pas réussi, j'ai remis comme c'était avant avec un onmouseover :D mais je vais essayer le coup de la balise.
Par Dizayo le 27/09/10
Hello, juste pour vous dire qu'il existe également la méthode dites des "sprites CSS".

Avantages :
- Vous pouvez mettre votre image sur n'importe quelle balise pouvant accueillir un background.
- Vous pouvez faire tous vos background avec une seule image (donc moins de requêtes au serveur).
- Pas de temps de chargement non plus entre le survol de la souris et l'affichage de la nouvelle image.
- Compatible tous navigateurs.

Pour les inconvénients je n'en ai pas encore trouvé, et pour la technique je vous invite à faire une recherche google ou à lire cet article (ce n'est pas de la pub cachée je vous rassure ^^) :
http://www.armelpingault.com/2009/10/15/sprites-css/
Par cafard-naum le 27/09/10
En effet j'avais déjà vu cette astuce, mais jamais la patience de me pencher dessus. Merci du conseil en tout cas, quand j'aurai le temps j'essayerai de voir ça (même si je pense pas que j'arriverai à expliquer le procédé ici, mais je peux toujours mettre un lien vers un article bien mieux foutu).
Par Code Promotionnel Uber le 05/09/15
Avez vous un lien pour que je puisse télécharger l'article en PDF ?
Par serrurerie paris 15 le 07/09/15
Excellent article je vous soutient .
 

Ajouter un commentaire









Commentaire :








Votre adresse IP sera enregistrée pour des raisons de sécurité.
 

La discussion continue ailleurs...

Pour faire un rétrolien sur cet article :
http://cow-vault.cowblog.fr/trackback/3011440

 

<< < | 1 | 2 | > >>

Créer un podcast