我的文档中有一个锚标记的全局规则:
a,a:hover {border-bottom: 1px solid #ccc;}
但是边框在图像上看起来不太好。我很好奇是否有一种方法可以删除仅使用纯 css 的包含图像的锚标记的边框?
我发现了这个: http: //konstruktors.com/blog/web-development/1122-remove-border-from-image-links/
它基本上是一个非常简单的 hack,如下所示:
a img { border:none; vertical-align:top; }
它就像一个魅力,没有浏览器冲突:有关更多详细信息,请参阅文章。
编辑:border:none
在大多数情况下,实际上并没有做任何有用的事情。边框在锚点上,而不是 img 标签,所以如果您已经使用全局 CSS 重置将锚定图像的边框归零,您只需将' 边框向上vertical-align:top
推到图像后面,这样就不会了a
更长的可见性(只要您的图像不透明)。
不,目前 CSS 中没有选择器可以根据其后代选择元素。您需要在 CSS 中使用 JavaScript 或类。
最可靠的是,您将class
在所有不包含图像的链接上使用一个属性,并在您的 CSS 规则中使用相应的类选择器。
如果您的大多数链接不包含图像,您可以使用否定方法并在那些包含图像的链接上设置一个类,例如,并在 CSS 中class=imagelink
使用选择器。:not(.imagelink)
支持:not(...)
是广泛的,但不是普遍的。另一种方法,不指望这种支持,是在你的问题中的所有链接上设置一个底部边框,然后为图像链接关闭它:
a.imagelink {border-bottom: none;}
不幸的是,不可能!我想我只使用 jquery 完成了这个。
该技巧仅适用于非透明图像,如果大于图像高度(想想小型社交网络图标)vertical-align
,则根本不起作用。a
line-height
我希望我可以在这里使用公认的解决方案,但它会导致文本块内的内联图像对齐,以及上述问题。
box-shadow
我已经决定在底部做一个纯白色,也许是IE8 和更早版本a > img
的备份阴影,然后就结束了。filter
不会弄乱布局:
a { text-underline: none;
border-bottom: 1px solid blue; }
a img { box-shadow: 0 .333em 0 0 white; /* white, or your background color */
filter: progid:DXImageTransform.Microsoft.Shadow... etc }
正如您问题的其他答案所说,现在不可能用 CSS 来做。但是如果你使用 jQuery,这个效果很好:
$(document).ready(function(){
$('a img').parent().css('border','none');
});
它基本上在页面加载后搜索包含图像的链接并声明css规则边框:无;对于图像的父元素,即。链接。