使用CSS隐藏文本,最佳实践?

dea*_*ock 41 html css hide

假设我有这个元素用于显示网站徽标:

<div id="web-title">
  <a href="http://website.com" title="Website" rel="home">
    <span>Website Name</span>
  </a>
</div>
Run Code Online (Sandbox Code Playgroud)

#blog-title会与设置样式background:url(http://website.com/logohere.png),但如何正确地隐藏文本Website Name?如下所示:使用css/sf/answers/189372991/ 隐藏文本,我已经看到了隐藏文本的各种方法,例如:

#web-title span { text-indent: -9999px; }
Run Code Online (Sandbox Code Playgroud)

要么

#web-title span { font-size: -9999px; }
Run Code Online (Sandbox Code Playgroud)

要么

#web-title span { position: absolute; top: -9999px; left: -9999px; }
Run Code Online (Sandbox Code Playgroud)

我也看到一些结合这三种方法.但实际上哪一个是有效隐藏文本的最佳实践?

coo*_*ita 76

实际上,最近出现了一种新技术.本文将回答您的问题:http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement

.hide-text {
  text-indent: 100%;
  white-space: nowrap;
  overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)

它是可访问的,具有比-99999px更好的性能.

更新:正如@deathlock在评论区域中提到的,上面修复的作者(Scott Kellum)建议使用透明字体:http://scottkellum.com/2013/10/25/the-new-kellum-method .html.

  • 只是更新:新Kellum方法怎么样?http://scottkellum.com/2013/10/25/the-new-kellum-method.html (2认同)

Yuk*_*élé 15

你可以简单地让它透明

{
   width: 20px;
   height: 20px;
   overflow: hidden; 
   color:transparent;
}
Run Code Online (Sandbox Code Playgroud)


Mr.*_*ien 6

你不能display: none;像这样简单地使用

HTML

<div id="web-title">
   <a href="http://website.com" title="Website" rel="home">
       <span class="webname">Website Name</span>
   </a>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.webname {
   display: none;
}
Run Code Online (Sandbox Code Playgroud)

或者如果你担心保留空间,那么如何玩能见度呢?

.webname {
   visibility: hidden;
}
Run Code Online (Sandbox Code Playgroud)

  • 显示:没有一个对使用屏幕阅读器的人有很严重的影响.这是一个很大的可访问性禁忌. (6认同)
  • 但阅读实际上你想要隐藏的文本的用途是什么?如果你真的想要它应该被删除而不是为什么要隐藏?这个用户说他想要读者兼容的解决方案? (3认同)
  • 他没有说他想要屏幕阅读器,但他问什么是最好的做法.提供良好的可访问性是正确的做事方式.想象一下,如果你对你的徽标和菜单项进行了破坏,那么它对于屏幕阅读器来说是毁灭性的. (3认同)