Je ne sais pas si vous avez déjà été confronté à ce glitch visuel: vous passez la souris sur un bouton, et pendant une demi-seconde, l'image disparait pour ensuite devenir une image légèrement différente.
Ce bug arrive lorsque le bouton change d'image de fond (background-image), car la nouvelle image de fond n'est pas encore (télé)chargée.
Je n'ai pas trouvé de sujet qui en parle, et j'ai vu un bug de ce type sur le site de alsacréations, qui pourrait être corrigé par la méthode que je vais proposer.
Après quelques recherches, j'ai trouvé une méthode dans laquelle la nouvelle image de fond est nécéssairement chargée, puisqu'elle est sur la même image que l'image de fond principale.
Comment ça fonctionne? C'est simple, il suffit de faire une image deux fois plus grande, dans laquelle on retrouve les deux images que l'on veux utiliser et au lieu de changer la propriété css background-image, il faut modifier la propriété background-position.
Prenons un exemple d'une image qui doit faire 100x20 pixels sur un site. (donc une image de 100x40 pixels minimum)
On peux bien sûr avoir une image de 200x20 pixels, mais il faut alors avoir:
Il est aussi possible d'utilisé une méga-propriété background-position ou background, avec la valeur de x puis y:
Modifié par Madeck (29 Oct 2009 - 21:37)
Ce bug arrive lorsque le bouton change d'image de fond (background-image), car la nouvelle image de fond n'est pas encore (télé)chargée.
Je n'ai pas trouvé de sujet qui en parle, et j'ai vu un bug de ce type sur le site de alsacréations, qui pourrait être corrigé par la méthode que je vais proposer.
Après quelques recherches, j'ai trouvé une méthode dans laquelle la nouvelle image de fond est nécéssairement chargée, puisqu'elle est sur la même image que l'image de fond principale.
Comment ça fonctionne? C'est simple, il suffit de faire une image deux fois plus grande, dans laquelle on retrouve les deux images que l'on veux utiliser et au lieu de changer la propriété css background-image, il faut modifier la propriété background-position.
Prenons un exemple d'une image qui doit faire 100x20 pixels sur un site. (donc une image de 100x40 pixels minimum)
.bouton_envoyer {
background-image: url("images/envoyer.png");
background-position-x: 0; /*il est possible d'enlever les unités pour une valeur de 0*/
background-position-y: 0;
}
.bouton_envoyer:hover {
background-position-y: 20px;
}
On peux bien sûr avoir une image de 200x20 pixels, mais il faut alors avoir:
.bouton_envoyer:hover {
background-position-y: 20px;
}
Il est aussi possible d'utilisé une méga-propriété background-position ou background, avec la valeur de x puis y:
.bouton_envoyer {
background: url("images/envoyer.png") 0 0; /* avec une seule propriété*/
}
.bouton_envoyer:hover {
background-position: 0 20px;
}
Modifié par Madeck (29 Oct 2009 - 21:37)