[CSS] Image et Lien

Une toute petite question, j’aimerai avoir un lien sous forme d’image que je pourrait modifier selon différentes feuilles de styles.

Voici comment j’ai procédé :

[code]


 
[/code]

[code]#menu #menu1s {
       font-size: 0px;
height: 64px;
width: 300px;
background-repeat: no-repeat;
background-image: url(image1/image1.png);
}

#menu #menu2 {
       margin-left: -10px;
font-size: 0px;
height: 64px;
width: 300px;
background-repeat: no-repeat;
background-image: url(image1/image2.png);
}[/code]

Ca marche sous Firefox, mais sous IE le texte s’affiche quand même en tout petit. Ca n’est pas propre et surtout ca ne passe pas au validator, quelqu’un à une idée pour faire ca bien ?

facile, n’utilise pas font-size : 0, ie s’en fiche…

fait plutot comme ca

[code]#menu1 {

text-indent:-1000px;
overflow: hidden;

height: 64px;
width: 300px;
background-repeat: no-repeat;
background-image: url(image1/image1.png);
}[/code]

ca marche sous ie et gecko

par contre si ton html passe pas au validator, ca n’a rien a voir avec la feuille de style (a moins que ce soit ta css qui valide pas ??)

J’ai oublié de préciser que ca passait pas au validator à cause de la balise qui est à l’extérieur de la balise

  • , il faut faire l’inverse.
  • le text-indent résoud une partie du problème.

    Ton HTML ne passe pas au validateur à cause de ça :

    [quote name=‹ ZGoblin › date=’ 25 Nov 2004, 11:48’][code]


     

    [/code] [right][post="306981"]<{POST_SNAPBACK}>[/post][/right][/quote]

    Le li ne peut pas être imbriqué dans un href c’est l’inverse

    [code]


     

    [/code]

    Ah bah trop lent, tu t’en étais déjà rendu compte :stuck_out_tongue:

    Pas assez rapide Plissken :P, je vais aussi préciser que si effectivement je fais l’inverse, et bien le lien se fait sur le texte qui n’apparait plus (à cause du text-size: 0 ou du text-indent: -1000) alors que moi je voudrai que ce soit sur l’image, c’est à dire sur toute la balise

  • .
  • [quote name=‘ZGoblin’ date=’ 25 Nov 2004, 13:21’]Pas assez rapide Plissken  :P, je vais aussi préciser que si effectivement je fais l’inverse, et bien le lien se fait sur le texte qui n’apparait plus (à cause du text-size: 0 ou du text-indent: -1000) alors que moi je voudrai que ce soit sur l’image, c’est à dire sur toute la balise

  • .
    [right][post=“307010”]<{POST_SNAPBACK}>[/post][/right][/quote]

    t’as raison ma reponse etait mauvaise, c’est ca qu’il faut faire :

    [code]#menu1 a {

    display:block;
    text-indent:-1000px;
    overflow: hidden;

    height: 64px;
    width: 300px;
    background-repeat: no-repeat;
    background-image: url(image1/image1.png);

    }[/code]

    et ne surtout pas imbriqué la balise a et li ca va de soi…

  • Après avoir matter les sources de plusieurs sites de design, j’ai trouvé exactement la même solution, à une différence prêt, ta solution engy provoque une ligne au travers de mon écran :

    Le site proposait d’ajouter dans la balise une balise et ca marche plutot bien sous Firefox et sous IE.

    Petit Edit pour dire que ca foire totalement sous IE, ca marche pour le premier titre, mais les suivants sont les uns sur les autres… :stuck_out_tongue:

    Un dernier petit Edit pour dire que si je fermerai bien mes balises XHTML ca marcherai beaucoup mieux et aussi pour dire qu’il n’y a pas le même espacement entre les titres sous Firefox et sous IE :stuck_out_tongue: +1

    [code]

     a {  background-image: url(http://www.google.com/images/logo.gif);  text-decoration: none;  }  .menu span {  visibility: hidden;  } [/code]

    Personnellement je préfere cacher vraiment le texte plutôt que de le pousser hors du champ visuel.

    Il existe pleins de variantes suivant le fait que tes images soient de taille fixe ou pas, qu’elles soient différentes ou pas (class ou élement), etc…

    J’ai peut être pas tout saisi, mais pourquoi ne remplaces tu pas ton texte par un bon vieux   des familles, ou même à la rigueur par un gif transparent (old-table-school, c’est sur, mais efficace ! ) ?
    Ou alors il y a un interet par rapport à certains browsers non css ou les moteurs de recherche?
    J’aimerai bien comprendre ca!

    [quote name=‹ jbaptiste › date=’ 26 Nov 2004, 18:43’]J’ai peut être pas tout saisi, mais pourquoi ne remplaces tu pas ton texte par un bon vieux   des familles, ou même à la rigueur par un gif transparent (old-table-school, c’est sur, mais efficace ! ) ?
    Ou alors il y a un interet par rapport à certains browsers non css ou les moteurs de recherche?
    J’aimerai bien comprendre ca!
    [right][post=« 307459 »]<{POST_SNAPBACK}>[/post][/right][/quote]

    C’est pour les milliers de personnes qui vont aller sur mon site avec lynx :stuck_out_tongue: . En fait, c’est au cas où il faudrai faire d’autres CSS pour le bas débit sans images, j’aime bien faire les choses bien faites et prendre les devants.

    Je vais relancer un peu le sujet avec un autre problème entre IE et Firefox (testé aussi avec Opera). Un de ces navigateurs n’affiche pas ce que je veux (je vous laisse deviner lequel :stuck_out_tongue: ).

    Voila ce que m’affiche le navigateur fautif :

    et voila ce que m’affiche les deux autres :

    le code :

    [code]


     

    Menu


     

         

    •    

    •    

    •    

    •    
    • ********

    •  

    [/code]

    et le CSS.

    J’ai mis des margin-bottom, margin-top et padding-bottom, padding-top à 0 presque partout, je ne sais vraiment pas pourquoi il me met des espaces entre le menus. :stuck_out_tongue:

    [quote name=‘jbaptiste’ date=’ 26 Nov 2004, 18:43’]J’ai peut être pas tout saisi, mais pourquoi ne remplaces tu pas ton texte par un bon vieux   des familles, ou même à la rigueur par un gif transparent (old-table-school, c’est sur, mais efficace ! ) ?
    Ou alors il y a un interet par rapport à certains browsers non css ou les moteurs de recherche?
    J’aimerai bien comprendre ca!
    [right][post=“307459”]<{POST_SNAPBACK}>[/post][/right][/quote]

    Parce que google et ses potes repèrent des mots clés comme menu, introdution etc… pour mieux indexer le contenu de la page et en deviner la nature pour mieux la classer. L’html c’est pour la structure du document et l’info et la css pour le design. Ca n’a en fait rien à voir avec la manière dont ie ou ff ou opera affiche la page mais avec le soin que tu mets à mettre à disposition les données.

    [quote name=‹ ZGoblin › date=’ 27 Nov 2004, 11:10’][code]


     

    Menu


     

         

    •    

    •    

    •    

    •    
    • ********

    •  

    [/code]

    et le CSS.

    J’ai mis des margin-bottom, margin-top et padding-bottom, padding-top à 0 presque partout, je ne sais vraiment pas pourquoi il me met des espaces entre le menus.  :stuck_out_tongue:
    [right][post=« 307576 »]<{POST_SNAPBACK}>[/post][/right][/quote]

    alors c’est a prendre avec des pincettes, mais c’est peut etre du a un bug d’ie (oui moi aussi ca m’etonne mais bon :P" ) essaie de retirer les retour a la ligne dans ton fichier html et voit si ca marche mieux.

    <li><a class="niveau1" href="*****.html">********</a></li><li><a class="niveau2" href="*****.html">********</a></li><li><strong class="niveau3">********</strong></li>.....

    oui je sais ca a l’air débile comme ça mais il me semble que ca m’avait résolu un probleme de ce genre.

    [quote name=‘nolan’ date=’ 26 Nov 2004, 14:23’]Personnellement je préfere cacher vraiment le texte plutôt que de le pousser hors du champ visuel.

    Il existe pleins de variantes suivant le fait que tes images soient de taille fixe ou pas, qu’elles soient différentes ou pas (class ou élement), etc…
    [right][post=“307379”]<{POST_SNAPBACK}>[/post][/right][/quote]

    Il n’y a pas un risque de faire blacklister par google si on met du texte caché?

    Sinon je souhaiterais souligner le fait qu’il n’est pas nécessaire de mettre ton

      dans un , la balise
        étant déjà une balise bloc (voir d’ailleurs l’exemple de l’excellent nolan plus haut dans ce thread).

    Hélas oui. :stuck_out_tongue:

    La dernière fois que j’en avais discuté avec un gourou il m’avait incendié pour ce genre de techniques de designers tendances/secte_w3.
    Pour lui la seule solution c’était de mettre des avec des noms générique et ce sont ces images là plutôt que la css que tu remplaces pour changer le look (le but du jeu étant de garder le caractère « générique » de la démarche. Tu utilises les attributs alt et title pour indiquer au moteur de recherche l’info contenue dans la balise. Si l’image n’était pas disponible on verrait alors le texte (alt/title) affiché et mis en forme par l’élement qui le contient. Au final on a les mêmes résultats et on ne prend pas le risque de se faire kicker. Mais c’est pas très propre :confused:

    Un autre exemple: les titres en image

    <h1><img src = "mon_beau_titre_custom.jpg" alt = "Chapitre 1" title = "Chapitre 1" /></h1>

    demo

    Ca marche super bien avec ff mais pas avec ie (me souvenait d’un truc pourtant tiens… vais fouiller dans mes affaires).

    [quote name=‹ engy › date=’ 27 Nov 2004, 12:05’]alors c’est a prendre avec des pincettes, mais c’est peut etre du a un bug d’ie (oui moi aussi ca m’etonne mais bon  :P" ) essaie de retirer les retour a la ligne dans ton fichier html et voit si ca marche mieux.

    <li><a class="niveau1" href="*****.html">********</a></li><li><a class="niveau2" href="*****.html">********</a></li><li><strong class="niveau3">********</strong></li>.....

    oui je sais ca a l’air débile comme ça mais il me semble que ca m’avait résolu un probleme de ce genre.
    [right][post=« 307600 »]<{POST_SNAPBACK}>[/post][/right][/quote]

    Merci, tu sais que je t’aime toi :stuck_out_tongue: ! Ca a résolu mon problème, je hais Internet Explorer… :stuck_out_tongue:

    [quote name=‹ ZGoblin › date=’ 27 Nov 2004, 13:39’]Merci, tu sais que je t’aime toi  :stuck_out_tongue: ! Ca a résolu mon problème, je hais Internet Explorer…  :stuck_out_tongue:
    [right][post=« 307635 »]<{POST_SNAPBACK}>[/post][/right][/quote]

    de rien de rien, j’ai ramé aussi pour trouver le problème.

    ça confirme que IE fume des trucs quand même . transformer un retour a la ligne dans le html en
    a l’affichage, c’est gonflé… :stuck_out_tongue: