开发者

Remove line under image in link

I have a few instances where I place image within a link. Normally if you set border="0" there line under a link does not apply to the image. However, I had to specify DOCTYPE to be and now in FF I see the line under all images.

I still would like to have my links underlined, but not the images within.

<a href="link.php"><img src="img.png" height="16" width="16" border="0"> link</a> 

I've tried to solve it with CSS by adding

a img {
    text-decoration:none
}

Unfortunately it did not work. I also tried:

a img {
    border:0
}

IE does not "underline" my images within a开发者_高级运维 link... Any suggestions would be highly appreciated.

Example Link

Remove line under image in link

I still would like to have my links underlined, but not the images within.


If you want to have a special case for links with images, give the a element a class and remove the text-decoration for that class:

HTML:

<a href="link.php" class="image-link"><img height="16" width="16" /></a>

CSS:

a img
{
  border: 0 none;
}
.image-link
{
  text-decoration: none;
}

This is great if you only have an image within the link, however you have both text and images within the anchor.

The solution for that would be to add a span around the text within the anchor:

<a href="link.php" class="image-link"><img height="16" width="16" /> <span>link text here</span></a>

and add an additional style in the stylesheet:

.image-link span
{
  text-decoration: underline;
}


A solution would be to use the image as a background image instead of in the html, possibly the background of the parent element of the a.


In case anyone cares, here's an alternative solution that I came up with to circumvent the issue:

.nl {
    text-decoration:none;
}
<a href="link.php" class="nl"><img src="img.png" height="16" width="16" border="0"><u>link</u></a>


a { text-decoration: none }

The underline is from the A-tag not the IMG


For those cases where editing the markup isn't an option (inaccessibility to templates and/or surrounding issues), you can use a little jQuery. You may need to adjust the syntax to override your CSS:

jQuery('a > img').parent().css({'text-decoration' : 'none'});


Solved

<a href="link.php" style="text-decoration: none"><img src="img.png" height="16" width="16" border="0"> link</a> 


If you are linking to an image, try the following:

a[href$=jpg], a[href$=png] {
    text-decoration: none;
}


My two cents:

$('a').each(function(){
    var images = $(this).find("img");
    images.parent().addClass('no_border_img');
});

Loop all links and find images inside, then for each one add CSS style to the link.

Only for a image with link inside a previous link style. Remember to create the style for 'no_border_image'.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜