2010-09-28 24 views
3

J'ai un menu pour lequel je voulais que tout l'espace autour du texte, dans chaque élément individuel, amène l'utilisateur à la page spécifiée. Je regardais autour sur le web et a trouvé que la meilleure solution est de régler l'affichage « a » pour bloquer, comme suit:Les images liées CSS sont en train d'être soulignées (l'affichage "a" est bloqué)

a { 
    display: block; 
    height: 100%; 
    text-decoration: underline; 
} 

J'ai réussi à obtenir ce travail parfaitement mais que vous voulez mettre des images dans certains d'entre eux - Comme une icône de calendrier pour l'option des événements. Je remarque qu'il est maintenant souligné les liens aussi. Y a-t-il un moyen de s'en débarrasser? Les liens ont un padding-right réglé à 5px si cela permet d'affiner la cause/solution.

Donc tout le code correspondant est comme suit:

a { 
    display: block; 
    height: 100%; 
    text-decoration: underline; 
} 
a > img { 
    text-decoration: none; 
    border: none; 
    padding-right: 5px; 
    width: 1.8em; 
    height: 1.8em; 
} 

Un grand merci à l'avance.

Cordialement,

Richard

PS Il est Google Chrome dans lequel j'ai ce problème - je l'ai pas actuellement vérifié dans tous les autres navigateurs.

Répondre

10

Les images sont des éléments en ligne, elles sont donc traitées comme faisant partie du texte. Ce n'est pas l'image qui est soulignée, c'est le texte qui contient l'image qui est soulignée, donc cela n'aide pas à empêcher le soulignement de l'image.

Vous pouvez transformer les images en éléments de blocs en les faisant flotter, ils ne font pas partie du texte:

a > img { 
    float: left; 
    border: none; 
    padding-right: 5px; 
    width: 1.8em; 
    height: 1.8em; 
} 
+0

Super merci merci merci! Cela me fait économiser beaucoup de temps et d'efforts. J'ai essayé d'afficher: bloquer sur les images (comme conseillé sur un autre site) mais il ne m'est jamais venu à l'esprit d'essayer de flotter. – ClarkeyBoy

+0

Vous pouvez constater que l'utilisation des propriétés background-image et background-position est une solution encore meilleure. Cela dépend de ce que le contenu des images est je suppose. – Casey

+0

@Casey: Bon point. Les images d'arrière-plan ne peuvent pas être redimensionnées, ce qui pourrait être une limitation dans ce cas. – Guffa

2

Je pense que votre meilleure option est de se débarrasser de la propriété text-decoration souligné pour l'élément a, mettre le texte du lien dans une span avec classe commune, et appliquer text-decoration: underline à cette classe.

+0

J'avais peur que ce soit le genre de réponse que j'ai ... :(Merci quand même – ClarkeyBoy

+0

Votre span n'a pas besoin d'un nom de classe, juste le cibler avec "a> span {}" – Casey

+0

Guffa a obtenu la bonne réponse - Utilisation de float: à gauche sur les images résout le problème !! J'étais sur le point d'ajouter toutes les travées .. – ClarkeyBoy

0

je courais dans le même doute. Les text-decoration ensemble à none fonctionne pour moi:

<a href="..." style="text-decoration:none;"> 
    <img src="..."> 
</a> 

Comme l'a dit befor, vous pouvez utiliser une classe pour rendre plus générique.

Belle question à propos, ça a l'air totalement étrange sur mon site quand j'ai vu quelques-uns en bas des images. Ensuite, je réalise que c'était un sous-jacent.