Span : display none qui "prend de la hauteur" sous IE.

Span : display none qui "prend de la hauteur" sous IE. - HTML/CSS - Programmation

Marsh Posté le 01-12-2005 à 22:21:55    

Bonsoir tout le monde,
 
j'ai un menu classique mais graphique :

Code :
  1. <ul id="menu">
  2.    <li><a href="/index.php" id="accueil"><span>Accueil</span></a></li>
  3.    <li><a href="/photographies/index.php" id="photographies"><span>Photographies</span></a></li>
  4.    <li><a href="/3d/index.php" id="trois_d"><span>3D</span></a></li>
  5.    <li><a href="/informations/index.php" id="informations"><span>Informations</span></a></li>
  6.    <li><a href="/contact_cv/index.php" id="contact_cv"><span>Contact & Curriculum Vitae</span></a></li>
  7. </ul>


Graphique parce que c'est une image de background qui se "décale" avec le a:hover.
 
Problème d'accessibilité, j'essaie de mettre qd-même l'intitulé du menu en texte.
J'utilise la balise <span> avec "display: none;" en CSS (c'est pas la panacée mais c'est mieux que rien).
 
Problème, IE doit donner une certaine hauteur à ce span et tout le menu s'en trouve décalé (voir image ci-dessous) :
 
http://img220.imageshack.us/img220/6352/decalage8ll.jpg
 
Le décalage augmente lorsqu'on augmente la taille du texte (CTRL + molette souris).
Sous Firefox, tout reste nickel.
 
J'ai essayé avec des font-size à 0 (em, px, %...), des height etc... rien n'y fait.
 
Une idée svp ?
 
Merci.

Reply

Marsh Posté le 01-12-2005 à 22:21:55   

Reply

Marsh Posté le 02-12-2005 à 06:58:25    

Je crois que tu ne comprends pas bien comment ça marche la sémantique. Tes <span> ne servent à rien là, styles les <a> directement :)


---------------
http://www.alsacreations.com, http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net. A ne surtout pas prendre en exemple : http://www.worldinternet.be
Reply

Marsh Posté le 02-12-2005 à 10:20:00    

Je verrai s'il est possible de mettre le "display: none" sur le "a" (qui est, au passage, déjà en display: block). La question reste de toute façon entière.
 
EDIT:

Code :
  1. #menu a
  2. {
  3. display: block;
  4. height: 22px;
  5. width: 102px;
  6. }
  7. a#accueil:hover
  8. {
  9. background: url(../images/menu.png) 0px -110px;
  10. }

Le "display: none" sur le "a" ne va-t-il tout simplement pas ne rien afficher du tout ? Pas trop ce que j'ai envie de faire.
 
 
REDIT :

Citation :

Je crois que tu ne comprends pas bien comment ça marche la sémantique


Hummm, je crois qu'il y a aussi beaucoup de types qui me semblent pourtant "très calés" et qui ont alors aussi des problèmes avec la sémantique ;)
http://www.mezzoblue.com/tests/rev [...] placement/ pour la technique du span notamment. Technique utilisée parmi d'autres, qui n'est pas parfaite et que j'emploie surement mal (sinon cela marcherait sous IE), mais...
 
Peut-être ne pas utiliser le "display: none" mais plutôt un "text-indent" de folie ?


Message édité par Beral2 le 02-12-2005 à 10:51:34
Reply

Marsh Posté le 02-12-2005 à 17:58:45    

:up: Pliiize.

Reply

Marsh Posté le 02-12-2005 à 18:25:09    

Alors, d'après moi, si tu tiens absolument à utiliser une image en fond de menu :
 

Code :
  1. a{
  2.    background-image:url(ton_image);
  3.    background-position:top;
  4.    text-decoration:none;
  5.    color:black;
  6. }
  7. a:hover{
  8.    background-position:bottom;
  9.    color:white;
  10.    font-weight:bold;
  11. }


(rq : j'aime mieux utiliser une seule image en fond ou sont definis les 2 etats du "bouton" et que l'on positionne selon l'etat)

Code :
  1. <ul id="menu">
  2.     <li><a hre="url">Accueil</a></li>
  3.     ...
  4. </ul>


 
Sinon, vu que ton fond c'est de la couleur :

Code :
  1. a{
  2.    background-color:white;  // ou la couleur que tu veux
  3.    text-decoration:none;
  4.    color:black;
  5. }
  6. a:hover{
  7.    background-color:lightgrey;  // ou une autre couleur
  8.    color:white;
  9.    font-weight:bold;
  10. }


 
Ca te simplifierait un peu ton code

Reply

Marsh Posté le 02-12-2005 à 18:50:19    

Bon, merci pour la réponse mais c'est tjrs pas ma question, désolé.
 

Citation :

(rq : j'aime mieux utiliser une seule image en fond ou sont definis les 2 etats du "bouton" et que l'on positionne selon l'etat)


En fait c'est toute l'ul qui a une image de background et cette image se décale seulement dans la fenêtre des "a" : une seule image (état hover et pas) pour TOUT le menu, pas une par lien.
Le code CSS en entier (j'aurais dû le mettre d'entrée, désolé) :

Code :
  1. ul#menu
  2. {
  3. position: absolute;
  4. background: url(../images/menu.png) no-repeat !important;
  5. margin: 0 !important;
  6. background: url(../images/menu.gif) no-repeat;
  7. margin: 0px 0px 0px -52px;
  8. }
  9. #menu li
  10. {
  11. padding: 0;
  12. background-image: none !important;
  13. }
  14. #menu a
  15. {
  16. display: block;
  17. height: 22px;
  18. width: 102px;
  19. }
  20. a#accueil:hover
  21. {
  22. background: url(../images/menu.png) 0px -110px;
  23. }
  24. a#photographies:hover
  25. {
  26. background: url(../images/menu.png) 0px -132px;
  27. }
  28. a#trois_d:hover
  29. {
  30. background: url(../images/menu.png) 0px -154px;
  31. }
  32. a#informations:hover
  33. {
  34. background: url(../images/menu.png) 0px -176px;
  35. }
  36. a#contact_cv:hover
  37. {
  38. background: url(../images/menu.png) 0px -198px;
  39. }


 
Mon fond n'est pas que de la couleur (sinon, je n'aurais pas utilisé d'image), c'est une couleur avec transparence (le menu est légèrement transparent, image PNG, GIF pour IE).
Pour le texte il est aussi dans l'image parce que c'est plus joli (polices voulues, lissage des caractères...).
 
Quoi qu'il en soit, le menu marche très bien, aucun problème. Ce que je veux c'est le rendre accessible.
 
Ma question est, en quelque sorte, de savoir comment fixer la hauteur d'un span pour IE à 0 (même en agrandissant par molette + souris).
Ou quelle autre façon y a-t-il de rendre un menu graphique accessible ? Le text-indent ?
 
Sinks.


Message édité par Beral2 le 02-12-2005 à 19:04:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed