HTML"隐藏"和"咏叹调隐藏"属性之间有什么区别?

Dan*_*obe 233 html5 wai-aria

在使用Angular Material时,我一直在看到aria属性.有人可以向我解释,咏叹调前缀是什么意思?但最重要的是,我想要了解的是aria-hiddenhidden属性之间的区别.

Leo*_*mer 336

ARIA(可访问的富Internet应用程序)定义了一种使残障人士更容易访问Web内容和Web应用程序的方法.

hidden属性是HTML5中的新属性,告诉浏览器不要显示该元素.该aria-hidden属性告诉屏幕阅读器他们是否应该忽略该元素.有关更多详细信息,请查看w3文档:

https://www.w3.org/WAI/PF/aria/states_and_properties#aria-hidden

使用这些标准可以使残疾人更容易使用网络.

  • 正确.`hidden`对每个人来说都是隐藏的.`aria-hidden`对屏幕阅读器和类似工具来说意味着隐藏.例如,这对于纯粹用于格式化并且不包含实际内容的组件非常有用. (37认同)
  • @AndreiBârsan@DanielKobe我认为安德烈的意思是"不正确".(他的评论的其余部分是事实.)`hidden`应该阻止屏幕阅读器访问标签的内容. (22认同)
  • 你对'aria-hidden`的回答是正确的; 但是,你没有说"隐藏"以区别于"咏叹调".不幸的是,这是最好的答案.请更全面地了解您的答案. (6认同)
  • 那么如果你只是使用隐藏属性,屏幕阅读器还会读取吗? (4认同)
  • 您的回答解释了属性的*效果*,但没有解释它们的*含义*。您没有提及可访问性树或元素的时间相关性。阅读规格以获取更多信息。[[HTML 5.2](https://www.w3.org/TR/html52/editing.html#the-hidden-attribute), [ARIA 1.1](https://www.w3.org/TR/wai- aria-1.1/#aria-hidden)] (2认同)

Unk*_*pus 34

隐藏属性是布尔属性(True/False).在元素上使用此属性时,它将删除与该元素的所有相关性.当用户查看html页面时,不应显示具有hidden属性的元素.

例:

    <p hidden>You can't see this</p>
Run Code Online (Sandbox Code Playgroud)

Aria隐藏属性表示元素及其所有后代在浏览器中仍然可见,但对于辅助功能工具(如屏幕阅读器)将不可见.

例:

    <p aria-hidden="true">You can't see this</p>
Run Code Online (Sandbox Code Playgroud)

看看这个.它应该回答你所有的问题.

注意: ARIA代表Accessible Rich Internet Applications

资料来源: Paciello集团

  • 这不完全正确(即使官方文档在这里有点模糊).在浏览器中仍然可以看到带有"aria-hidden ="true"的元素,但对于辅助功能工具(如屏幕阅读器)将不可见. (24认同)

chh*_*vey 9

语义差异

根据HTML 5.2:

在元素上指定时,[ hidden属性]表示该元素尚未或不再与页面的当前状态直接相关,或者它用于声明要由页面的其他部分重用的内容反对被用户直接访问.

示例包括一些选项卡列表,其中某些面板未公开,或者登录屏幕在用户登录后消失.我喜欢将这些内容称为"暂时相关",即它们与时间相关.

另一方面,ARIA 1.1说:

[ aria-hidden状态]指示元素是否向可访问性API公开.

换句话说,aria-hidden="true"辅助功能树中删除的元素(大多数辅助技术aria-hidden="false"都会遵循这些元素)和元素将永远暴露给树.没有aria-hidden属性的元素处于"未定义(默认)"状态,这意味着用户代理应根据其呈现将其公开给树.例如,如果用户代理的文本颜色与其背景颜色匹配,则可以决定将其删除.

有效差异

语义有可预见的效果在浏览器/用户代理.我区分的原因是建议使用用户代理行为,但规范不要求.

hidden属性应隐藏所有演示文稿中的元素,包括打印机和屏幕阅读器(假设这些设备符合HTML规范).如果要从辅助功能树以及可视媒体中删除元素,aria-hidden可以实现.但是,不要hidden 仅因为你想要这种效果而使用.首先问问自己aria-hidden语义是否正确(见上文).如果hidden语义不正确,但您仍希望在视觉上隐藏元素,则可以使用其他技术,如CSS.

并且,假设用户的辅助技术符合ARIA规范,它不会hidden向用户公开元素.这对于"视觉天赋"是有用的,例如图标,图像等对于用户消费不是必需的.

句法差异

最后,两个属性之间的语法有所不同.

hidden是一个布尔属性,意味着如果属性存在则它是真的 - 无论它可能具有什么值 - 如果该属性不存在则为false.对于真实情况,最佳做法是在all(hidden)或空字符串值(hidden)中不使用任何值.我建议,hidden因为有人阅读/更新你的代码可能会推断aria-hidden="true"会产生相反的效果,这是完全错误的.

hidden相反,它是一个枚举属性,允许一个有限的值列表.如果<div hidden>...</div>属性存在,则其值必须为<div hidden="">...</div>hidden="true".如果您想要"未定义(默认)"状态,请完全删除该属性.


进一步阅读:https: //github.com/chharvey/chharvey.github.io/wiki/Hidden-Content