如何隐藏锚文本而不隐藏锚


76

说我有以下标记:

<li><a href="somehwere">Link text</a></li>

如果标签上有背景图片,我如何仅使用CSS隐藏链接文本?除了在ie7小斑点显示中之外,font-size:0似乎在a标签上可以正常工作。

谢谢

  • 到目前为止,谢谢您的帮助。iv使用line-height:0; 和font-size:0; 和文本缩进:-999px;但它仍然在野生动物园中出现了一些斑点,有什么想法吗?

Answers:


193

尝试

 a{
    line-height: 0; 
    font-size: 0;
    color: transparent; 
 }


color: transparent;盖与WebKit的问题,浏览器仍显示文本的1px的。


1
我发现这在Chrome 15.0.874.120中不起作用。还必须添加颜色:透明;
brokenindexfinger11年

@brokenindexfinger很奇怪...但是添加颜色:透明作品呢?如果是这样,请随时编辑我的答案并添加,或者可以。
Loktar

1
嗨,Loktar,这是我尝试在博客中实现并最终获得的信息。非常感谢您的帮助。
umarali1981

1
感谢您提供此信息。这些信息有助于在我正在从事的项目中设置可访问性
Loren Shaw

1
该死的好办法。文本缩进可能很挑剔,特别是在处理多个相互包裹的元素以及在这些元素上设置的多个位置时。好答案。
agon024 '16

19

将文本环绕在一个范围内,并将“visibility:hidden;可见性”设置为隐藏将隐藏该元素,但它仍将占据页面上的相同空间(相反显示:也不会从页面上将其删除)。


谢谢scrappedcola,这是一个很好的解决方案!
klewis

这是正确的解决方案,但我使用了display:none也删除了所有大小调整。
christopher_h

16
a { text-indent:-9999px; }

根据我的经验,我倾向于工作得很好。


很好,甚至都没有想到这一点,我一直都在使用带有图片的标头。
Loktar

8
您可能会受到Google的影响,因为您告诉浏览器为每个应用了元素的框绘制一个宽度为9999px的框。就个人而言,最好采用display:none,visible:hidden,font-size:0或类似的方式,以避免Google的“可能性”不尊重您过度扩展的布局方案。我也曾经用这种方式编码,但是我停了下来。源- stackoverflow.com/questions/8971152/...
klewis

1
这也打破outline了Firefox。轮廓矩形将从浏览器视口的左侧开始。
Mariusz Pawelski '18年

6

迷你提示:

我有以下情况:

<a href="/page/">My link text
:after
</a>

我用font-size:0隐藏了文本,因此可以使用FontAwesome图标。这适用于Chrome 36,Firefox 31和IE9 +。

我不建议使用颜色:透明,因为文本stil存在并且可以选择。使用line-height:0px不允许我使用:after。也许是因为我的元素是内联块。

可见性:隐藏:不允许我使用:after。

文字缩进:-9999px;:还移动了:after元素


1
是的,我也有伪元素的问题,这已经解决了..谢谢!
ari gold


3

另一种选择是基于引导程序“仅sr”类隐藏。如果使用“仅sr”类将文本包装在跨度中,则不会显示该文本,但是屏幕阅读器仍可以访问它。因此,您将拥有:

<li><a href="somehwere"><span class="sr-only">Link text</span></a></li>

如果您不使用引导程序,则仍然保留上面的内容,还要添加下面的css来定义“仅sr”类:

.sr-only {position: absolute;  width: 1px;  height: 1px;  padding: 0;  margin: -1px;  overflow: hidden;  clip: rect(0 0 0 0);  border: 0; }

1

我遵循了Loktar的最佳答案,并且效果很好。我唯一遇到的问题是Chrome(我的当前版本是27.0.1453.94 m)。我遇到的问题是,Chrome似乎意识到链接中的文本不可见,并且将链接的位置降低了一些,比预期的要低一些(类似于margin-top,但是无法更改它)。这使我们使文本不可见的所有方式都发生:-line-height:0; -字体大小:0;-文字缩进:-9999px;

我可以通过调整链接的垂直对齐来解决此问题,如下所示:

vertical-align: 25px;

我希望这是有帮助的



1

您可以将图像放入:: before伪元素中,并为图像设置相同的尺寸+添加overflow:hidden,例如:

li a::before{
  content:url('img');
  width:20px;
  height:10px
}

a {
  overflow:hidden;
  width:20px;
  height:10px
}


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.