我听说过让.hidden
课不是
.hidden { display: none }
但是使它的宽度和高度为1,并使用剪裁等使元素好像它仍然存在于屏幕上但内容不可见。
但是,当我们使用JavaScript来隐藏某些内容时,该元素的目的是否完成,我们希望它不会在屏幕上显示而对屏幕阅读器不可见,这是不是真的?
案例1:例如,如果它是一个输入框,并且框内有一条灰色的文本行“输入关键字”。当用户实际点击或keydown(或使用input
事件)时,现在我们有一个JavaScript处理程序来隐藏“输入关键字”文本,因为它只是输入框内的灰色提示。在这种情况下,文本不应该被完全隐藏,实际上使用display: none
,这样即使是屏幕阅读器也无法读取它? (用户已经学会了足够的开始输入,所以提示不应该仍然在那里被屏幕阅读器读取,对吗?)
案例2:如果是弹出式泡泡,出现错误消息,或者有“为我们的订阅输入您的电子邮件”链接,它会弹出一个泡泡,然后当泡沫关闭时,不应该使用display: none
完全关闭泡沫?屏幕阅读器实际上仍然无法读取完成和关闭的气泡的内容。
案例3:我能想到的唯一一个案例是屏幕阅读器应该可以使用“隐藏”的一小部分:它是用于提供额外信息的泡沫,例如产品评级(有多少颗星)超出5),或当鼠标悬停在某些“?”上时可以弹出的额外帮助信息图标或链接。但即使在这种情况下,屏幕阅读器也不会实际读出“链接到更多信息”或“链接显示评级”,即标签的alt
或title
,而不是弹出信息直到用户弹出它?
所以我的问题是:不应该有两种类型的隐藏。一个是display: none
类型,屏幕阅读器不应该看到(将其设为.hidden
类),另一个是width: 1px; height; 1px
,屏幕阅读器可以看到(或将读出)(make这个.a11y-hidden
类,以及类型2是否可能远远少于类型1?
答案 0 :(得分:4)
大多数情况下,就是这样。
2014年编辑:我切换到clipping method from TJK at Yahoo!(由于隐藏的跨度只有一个< i> con可见的链接)。
我更喜欢position: relative; left: -5000px
而非剪辑1x1px,我知道雅虎!团队只使用后者但目标是相同的
此外,我将其称为.visually-hidden
(来自WordPress中的Twenty Sth主题以及其他CMS和框架)。 .a11y-hidden
意味着相反:它只能由屏幕阅读器和纯HTML显示(可感知)。
标签内容,尚未发生的错误消息(您的案例2)不应被任何人察觉。屏幕阅读器用户必须单击选项卡以显示其他人的内容
注意:屏幕阅读器会忽略display: none
和visibility: hidden
元素。而且其中一些(特别是OS X上的VoiceOver)将忽略height: 0
等元素
相关文章: Invisible Content Just for Screen Reader Users from WebAIM
案例1:正在读出的重要部分是与表单字段for
/ id
相关联的标签。
如果您使用键盘从一个字段导航到另一个字段,当您对其进行聚焦时,此文本将消失,并且对于以x00%缩放的用户将无法看到该文本。 HTML5引入了placeholder
属性,该属性与此提示具有相同的作用(这不是标签的替代品,这是一个提示,但很少有人阅读HTML5文档之一)并且仍然可以传递给屏幕阅读器甚至如果它在视觉上隐藏。
案例3:此信息应以可访问的方式以HTML格式编码,因此您无需在视口或像素中直观地隐藏信息。
alt文本是首选的方式(甚至更好的视觉效果,旁边有一些真实文本,同时避免过多的混乱。我没有人体工程学方面的培训,这通常会让想要从页面中删除所有东西的网页设计者烦恼;)) 。
title
属性应仅用于链接,并且您永远不会确定屏幕阅读器会选择阅读它们。这是个人问题,并按站点设置。他们可能会被一些网站所惹恼,他们会在所有地方禁用这些标题......但是,如果由于某些原因你不能这样做,它仍然是添加信息的最佳技术之一。
如何使用此.visually-hidden
课程?
答案 1 :(得分:0)
这里有很多需要解决的问题。
首先,理想情况下,输入框中的灰色文本应由'占位符'处理。属性。浏览器将为用户提供一致且预期的行为,并且您也可以更轻松地进行编码!
其次,理想情况下,对于可访问性,所有输入应始终具有标签。这样可以正确地向屏幕阅读器描述输入。你可以隐藏它们,如果设计没有要求它们(一些网站只使用占位符文本,但这并不意味着它们不应该在那里) - 这让我想到了我的第三点 - 隐藏屏幕上的内容但不是屏幕阅读器:
{display:none}将隐藏屏幕上的信息和屏幕阅读器。它基本上是一种使某些东西消失的方式 - 对每个人而言。这就是.visuallyhidden类(或类似的)进来的地方 - 它是一种向DOM添加上下文(额外信息)的方式,它将由屏幕阅读器拾取但不被有视力的用户读取,并且它是一种非常适用的技术。通常在不破坏页面布局或设计的情况下使AT用户更容易理解页面。
使用经过尝试和信任的类(例如HTML5样板中的类)是一个好主意,因为错误可能会使您在Google上受到惩罚(尝试使用blackhat内容)或在某些设备上创建一些屏幕阅读器的问题(例如iOS) - 位置:左侧和文本缩进由于多种原因不是一个好的解决方案,所以坚持使用1px和剪辑技术。