我最近遇到了这个教程,它使用 CSS 背景图像来显示网页的徽标,而不是使用 HTML 标记。在包含徽标的 div 中有一个占位符文本,为了使该文本消失,作者使用text-indent:-9999px而不是display:hidden因为他说使用后者是不好的做法。
那么,为什么它被认为是不好的做法呢?
我最近遇到了这个教程,它使用 CSS 背景图像来显示网页的徽标,而不是使用 HTML 标记。在包含徽标的 div 中有一个占位符文本,为了使该文本消失,作者使用text-indent:-9999px而不是display:hidden因为他说使用后者是不好的做法。
那么,为什么它被认为是不好的做法呢?
因为有时屏幕阅读器和搜索引擎会忽略那些出于 SEO 和/或语音目的而位于屏幕外的元素,但不会忽略这些display:none
元素。visibility:hidden
然而,这两种方法是否是“不好的做法”并不是真正的行业协议,更多的是一种偏好,这取决于作者对这些工具的真正了解以及他们对网站的目标是什么。
还要记住,建议至少有 5 年的历史,而且事情会随着时间而变化,所以当时的“最佳实践”现在并不自动成为最佳实践。
所以,找出你想要达到的目标,然后考虑你的选择,这在我看来是“最佳实践”。
主要是因为屏幕阅读器不会阅读隐藏的内容,但许多人会阅读位于屏幕外但仍然可见的内容。
首先,没有什么叫做display: hidden;
,无论是 itsdisplay: none;
还是 it's visibility: hidden;
oroverflow: hidden;
并提出您的问题,我不喜欢使用它,而是使用一个img
标签,其alt
属性将描述我的图像,是的,屏幕阅读器请阅读ALT
文本,如果你alt
你的标签上没有img
,它会简单地忽略它..
例如,如果我使用img
我的标志,那么我将使用类似的东西
<img src="#" alt="Company Name Logo" title="Company Name" />
为徽标使用背景图像意味着您可以将徽标文本放置在同一元素中。
原因之一是无障碍阅读器(针对视障者)在看不到徽标时会阅读徽标文本。但是,您不希望徽标上方的文本,因此您可以通过文本缩进来隐藏它。
display:none 中的内容不读取元素。
我不是 100% 确定这一点,但我还记得读过一些搜索引擎会忽略隐藏元素中的内容。然而,他们可能会索引缩进的内容,但这需要验证。