Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 用CSS隐藏文本,最佳实践?_Html_Css_Hide - Fatal编程技术网

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

Html 用CSS隐藏文本,最佳实践?,html,css,hide,Html,Css,Hide,假设我有一个用于显示网站徽标的元素: <div id="web-title"> <a href="http://website.com" title="Website" rel="home"> <span>Website Name</span> </a> </div> 或 或 我还看到一些人将这三种方法结合起来。但实际上哪一种是

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

<div id="web-title">
  <a href="http://website.com" title="Website" rel="home">
    <span>Website Name</span>
  </a>
</div>


我还看到一些人将这三种方法结合起来。但实际上哪一种是有效隐藏文本的最佳实践?

您不能简单地使用
显示:无像这样

HTML

或者,如果你想保留空间,那就玩玩“可见性”怎么样

.webname {
   visibility: hidden;
}

实际上,最近出现了一种新技术。本文将回答您的问题:

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


更新:正如@deathlock在评论区中提到的,上述修复()的作者建议使用:

若您愿意在标记中考虑到这一点(正如您在保留文本方面遇到的问题),我会选择jQuery UI在它们的:


如果您绝对拒绝为要隐藏在图像容器中的文本添加额外标记,则图像替换技术是很好的。

大多数开发人员会这样做:

<div id="web-title">
   <a href="http://website.com" title="Website" rel="home">
       <span class="webname">Website Name</span>
   </a>
</div>

.webname {
   display: none;
}
您可以确保文本仍然可读。

谷歌(搜索机器人)需要的是,向机器人提供的内容应与向用户提供的内容相同。缩进文本(任何文本)会让bot认为这是垃圾邮件,或者您正在向用户和bot提供不同的内容

最好的方法是直接使用徽标作为锚定标签内的图像。给你的图像加一个“alt”。这将是机器人阅读的完美选择,也将有助于图像搜索


这是直截了当的:

我意识到这是一个老问题,但Bootstrap框架有一个内置类(仅限sr)来处理除屏幕阅读器以外的所有东西上的隐藏文本:

<a href="/" class="navbar-brand"><span class="sr-only">Home</span></a>

您只需将其透明即可

{
   width: 20px;
   height: 20px;
   overflow: hidden; 
   color:transparent;
}
.hide-text{
 color:rgba(0,0,0,0);
 }

截至2015年9月,最常见的做法是使用以下CSS:

.sr-only{
    clip: rect(1px, 1px, 1px, 1px);
    height: 1px;
    overflow: hidden;
    position: absolute !important;
    width: 1px;
}

将.hide text类添加到包含文本的范围中

.hide-text{
display:none;
 }
或者使文本透明

{
   width: 20px;
   height: 20px;
   overflow: hidden; 
   color:transparent;
}
.hide-text{
 color:rgba(0,0,0,0);
 }
根据您的用例使用。

我是这样做的:

.hidden-text {
  left: 100%;
  display: inline-block;
  position: fixed;
}
另一种方式

position: absolute;
top: 0px;
left: -5000px;
这可能有用

.hide-text {
    opacity:0;
    pointer-events:none;
    overflow:hidden;
}


展示如何:无?不具建设性:目前来看,这个问题不适合我们的问答形式。我们希望答案能得到事实、参考资料或特定专业知识的支持,但这个问题可能会引发辩论、争论、投票或广泛讨论。这不是一个聪明的蠢货,但你不能换个形象标签吗?我只是一个务实的人,不喜欢丑陋的临时解决方案。也许我错了这里列出了大多数图像替换技术,它们的优缺点:最新技术综述:显示:没有一种对使用屏幕阅读器的人有很坏的影响。这是一个大的可访问性no-no.@Mr.Alien:我相信这是因为尊重CSS的屏幕阅读器会跳过未显示的元素。你不希望标题出现这种情况。基本上,你不想只对屏幕阅读器隐藏文本。但是阅读一个你想隐藏的文本有什么用呢?如果你真的想把它读出来,为什么要隐藏呢?这位用户在哪里说他想要一个与阅读器兼容的解决方案?他没有说他想要屏幕阅读器,但他问什么是最佳实践。提供良好的可访问性是正确的做事方式。想象一下,如果你对你的徽标和菜单项这样做,对屏幕阅读器来说会是毁灭性的。@Mr.Alien该徽标将替换显示网站名称的文本。有一个原因通常放在页面的第一位。。。大多数人想知道他们在什么网站上…这太棒了。你是怎么发现的?@Danger14不记得了,但是自从它被发布在Zeldman的网站上,一定有很多人在博客和Twitter上对它发表了评论。另一种使用clip的方法是:rect():只是更新:新的Kellum方法呢?如果您执行
文本缩进:100%
+1操作,它将破坏您的表格单元格。如果您有一个仍需激活的链接,则此操作非常有效。我用它来摆脱旧图像滑块上的数字,链接工作正常。这是一个解决方案,最终满足了我的需要。我有一个按钮,它通过css背景图像属性有一个图形,在移动设备上我想折叠按钮并隐藏文本。这太棒了。遇到了一个问题,我想隐藏ajax文件上传程序的一些部分,比如dropzone和StatusContainer中的一些文本。这个小黑客成功了。根据MDN,clip属性现在已被弃用。正如其他人所说,
display:none
对屏幕阅读器有非常坏的影响。
.sr-only{
    clip: rect(1px, 1px, 1px, 1px);
    height: 1px;
    overflow: hidden;
    position: absolute !important;
    width: 1px;
}
.hide-text{
display:none;
 }
.hide-text{
 color:rgba(0,0,0,0);
 }
.hidden-text {
  left: 100%;
  display: inline-block;
  position: fixed;
}
position: absolute;
top: 0px;
left: -5000px;
.hide-text {
    opacity:0;
    pointer-events:none;
    overflow:hidden;
}