Hello,
Inhabituel de poster un pb résolu, non? En fait j'ai trouvé la solution en préparant mon post et comme cette solution n'est pas évidente, j'ai jugé utile de la partager avec ce forum.
Point de départ: une liste <ul> avec des liens images (<img> dans un <a>. L'effet recherché est de faire apparaître une bordure en survol du lien.
Le code HTML :
Le code CSS :
A propos de ce CSS, on remarque que l'ordre LVFHA a bien été respecté comme expliqué ici : http://meyerweb.com/eric/css/link-specificity.html .
Hé bien, ça ne marche pas sous IE 6. Le cadre rouge n'apparaît pas au survol, mais bizarrement on le voit, quelques fois, en cliquant.
J'ai mis la page en ligne, ici http://turbinus.free.fr/css-lab/pb-hover.html#
J'ai trouvé la solution ici (1) et ici (2).
(1) http://www.quirksmode.org/css/ie6_purecsspopups.html
(2) http://www.tanfa.co.uk/css/articles/pure-css-popups-bug.asp
Pour que le survol soit pris en compte, il faut décrire une régle CSS supplémentaire, modifiant un élément CSS, qui n'a pas été affecté dans les règles link, visited, ... hover.
Le CSS suivant a marché dans mon cas (mais pas tout à fait, voir plus loin).
CSS pour correction sous IE :
La correction n'est pas complète car, le survol ne marche que sur les liens non actifs. Le cadre rouge n'apparaît pas sur le lien actif.
En regardant les règles CSS, on peut comprendre pourquoi, :active est défini après :hover et a donc, logiquement précédance sur lui.
La correction définitive consiste donc à placer la règle :hover en dernier.
CSS final :
Voilà, tout marche bien sous IE6. J'ai mis la page en ligne ici.
http://turbinus.free.fr/css-lab/fix-hover.html#
Une question me titille. Erik Meyer n'étant pas un débutant, violer sa règle sur l'ordre des liens me chagrine un peu.
Tout commentaire sera apprécié.
Modifié par pat665 (05 Nov 2005 - 10:57)
Inhabituel de poster un pb résolu, non? En fait j'ai trouvé la solution en préparant mon post et comme cette solution n'est pas évidente, j'ai jugé utile de la partager avec ce forum.
Point de départ: une liste <ul> avec des liens images (<img> dans un <a>. L'effet recherché est de faire apparaître une bordure en survol du lien.
Le code HTML :
<div id="link">
<ul>
<li><a href="#"><img src="img1.jpg" /></a></li>
<li><a href="#"><img src="img2.jpg" /></a></li>
<li><a href="#"><img src="img1.jpg" /></a></li>
</ul>
</div>
Le code CSS :
/* fff est la couleur du fond */
/* donc l'image apparaît sans cadre */
/* sauf en survol */
div#link a:link img {border: 5px solid #fff; }
div#link a:visited img {border: 5px solid #fff; }
div#link a:focus img {border: 5px solid #f00; }
div#link a:hover img {border: 5px solid #f00; }
div#link a:active img {border: 5px solid #fff; }
A propos de ce CSS, on remarque que l'ordre LVFHA a bien été respecté comme expliqué ici : http://meyerweb.com/eric/css/link-specificity.html .
Hé bien, ça ne marche pas sous IE 6. Le cadre rouge n'apparaît pas au survol, mais bizarrement on le voit, quelques fois, en cliquant.
J'ai mis la page en ligne, ici http://turbinus.free.fr/css-lab/pb-hover.html#
J'ai trouvé la solution ici (1) et ici (2).
(1) http://www.quirksmode.org/css/ie6_purecsspopups.html
(2) http://www.tanfa.co.uk/css/articles/pure-css-popups-bug.asp
Pour que le survol soit pris en compte, il faut décrire une régle CSS supplémentaire, modifiant un élément CSS, qui n'a pas été affecté dans les règles link, visited, ... hover.
Le CSS suivant a marché dans mon cas (mais pas tout à fait, voir plus loin).
CSS pour correction sous IE :
div#link a:hover {visibility: inherit; }
La correction n'est pas complète car, le survol ne marche que sur les liens non actifs. Le cadre rouge n'apparaît pas sur le lien actif.
En regardant les règles CSS, on peut comprendre pourquoi, :active est défini après :hover et a donc, logiquement précédance sur lui.
La correction définitive consiste donc à placer la règle :hover en dernier.
CSS final :
div#link a:hover {visibility: inherit; }
div#link a:link img {border: 5px solid #fff; }
div#link a:visited img {border: 5px solid #fff; }
div#link a:focus img {border: 5px solid #f00; }
div#link a:active img {border: 5px solid #fff; }
div#link a:hover img {border: 5px solid #f00; }
Voilà, tout marche bien sous IE6. J'ai mis la page en ligne ici.
http://turbinus.free.fr/css-lab/fix-hover.html#
Une question me titille. Erik Meyer n'étant pas un débutant, violer sa règle sur l'ordre des liens me chagrine un peu.
Tout commentaire sera apprécié.
Modifié par pat665 (05 Nov 2005 - 10:57)