-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[译]如何隐藏DOM元素? #142
Comments
隐藏 DOM 元素这篇文章的主要解释了多种隐藏DOM元素的实现方式。 当我们谈到一个元素被隐藏(hidden)时,我们通常是理解成不可见(not visible)。 为了消除歧义,我们将进行以下的术语约定:
通过以下表格可以很明确的对比出三种隐藏方式的异同:
无障碍树是什么?
|
如何完全隐藏元素完全隐藏一个元素有以下3种方式:
以上3种方式都会有相同的效果,内容不会被渲染也不会暴露在无障碍树中,他们有不同的表现效果。 CSS属性
|
如何语义上隐藏元素为了将内容从无障碍树上隐藏,但是在屏幕上保留,我们可以使用属性 例如,我们可能希望隐藏某些用于非描述性,纯粹美学目的的图像和图标: <a href="https://google.com">
<img src="search-symbol.png" alt="" aria-hidden="true">
Google Search
</a> 提示:不能给CSS选择器[aria-hidden="true"]增加任何可视的样式 |
如何从视觉层面隐藏元素为了确保使无障碍树的当前结构生效,我们也许需要提供不可见的内容。下面的CSS来自HTML-bp,这是基于无障碍隐藏元素的。 .visuallyhidden {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
border: 0;
padding: 0;
clip: rect(0 0 0 0);
overflow: hidden;
} CSS属性clip在任何浏览器都是被支持的,但是在CSS Masking 1中被弃用。取而代之的,我们建议使用 当Internet Explorer 9 - 11使溢出的容器focusable,clip确保绘制的outline,:focus不可见,并且无法单击该元素。 说到可聚焦元素,我们可能会使用.visuallyhidden样式进行跳过链接,在这种情况下,我们需要一种方法来撤消视觉隐藏。 HTML5 Boilerplate为此提供了以下样式: .visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
position: static;
width: auto;
height: auto;
margin: 0;
clip: auto;
overflow: visible;
} 但是,这种方法会带来一些问题。首先,我们需要通过添加可聚类类来声明元素兼容。第二,更重要的是 ,我们将样式重置为可能不是我们想要渲染的值。相反,我们可以使用:not(),这在每个现代浏览器中都受支持。 根据Beware推出的屏幕外可访问文本,上面的CSS片段可能会给某些屏幕阅读器带来问题。似乎(在某些情况下)单独的单词可能会被连接起来,因此很奇怪。幸运的是,我们可以通过添加white-space: nowrap来阻止空白的不希望的崩溃;。 2017版的.visuallyhidden.visuallyhidden:not(:focus):not(:active) {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
border: 0;
padding: 0;
white-space: nowrap;
clip-path: inset(100%);
clip: rect(0 0 0 0);
overflow: hidden;
}
|
Keyboard navigation仅在视觉上和语义上隐藏的元素需要注意。类似 为了确保有视力的键盘用户不会最终聚焦他们看不到的元素,并且视力障碍用户没有聚焦那些不存在的元素,我们需要确保部分隐藏的内容,不能通过Tab以及Shift Tab键访问到。我们可以通过添加 |
总结
|
原文链接:https://allyjs.io/tutorials/hiding-elements.html
The text was updated successfully, but these errors were encountered: