我听说过让.hidden
课程不作为
.hidden { display: none }
但使其宽度和高度为 1,并使用剪辑等,使元素就好像它仍然存在于屏幕上,但内容只是不可见。
但是,当我们使用 JavaScript 隐藏某些东西时,该元素的用途就完成了,我们希望它不显示在屏幕上,也不对屏幕阅读器可见,这不是真的吗?
案例一:比如是一个输入框,在输入框里面有一行灰色的文字“输入关键字”。当用户实际单击或按下键(或使用input
事件)时,现在我们有一个 JavaScript 处理程序来隐藏“输入关键字”文本,因为它只是输入框中的灰色提示。在这种情况下,不应该将文本完全隐藏,实际上使用 a display: none
,以至于即使屏幕阅读器也无法阅读?(用户已经学会了足够的知识来开始打字,所以屏幕阅读器不应该真的仍然存在提示,对吧?)
案例2:如果是弹出气泡,对于错误信息,或者有“输入您的电子邮件以进行订阅”的链接,它会弹出一个气泡,那么当气泡关闭时,气泡不应该是真的完全关闭使用display: none
?屏幕阅读器不应该真的仍然能够为已完成并关闭的气泡读取这些内容。
案例3:我能想到的唯一案例是屏幕阅读器应该可以使用“隐藏”的一小部分是:它是用于获取额外信息的气泡,例如产品评级(5颗星中有多少颗),或者当鼠标悬停在某个“?”上时可以弹出的额外帮助信息。图标或链接。但即使在这种情况下,屏幕阅读器也不会真正读出“更多信息的链接”或“显示评级的链接”,即在标签的alt
ortitle
中,并且在用户打开弹出信息之前不会阅读弹出信息?
所以我的问题是:不应该有两种隐藏类型。一种是display: none
屏幕阅读器不应该看到的类型(将其设为.hidden
类),另一种是width: 1px; height; 1px
屏幕阅读器可以看到(或将读出)(将其.a11y-hidden
设为类),以及类型 2 是否可能远低于类型 1?