如何解决Web 组件、语义标记和文档大纲 因此
假设我们正在创建一个名为 foo 的应用程序。我们的应用程序将使用一个 Web 组件 app-foo
,它创建一个包含以下标记的影子根:
<app-foo>
#shadow-root
<main>
...
</main>
</app-foo>
当然,用户并不关心他们使用的 Web 组件的影子根中的内容,因此他们只需编写他们认为合适的文档,并在需要的地方使用 app-foo
。这意味着文档可以包含一个 main
元素,就像 app-foo
一样。
您可能知道 html 规范(请参阅 html.spec.whatwg.org)告诉我们
一个文档不得包含多个未指定 main
属性的 hidden
元素。
“文档”在那里的真正含义是什么?在某些方面,影子根是否算作它们自己的封装文档,其中此类规则适用于每个单独的文档或影子根(因为它们共享 DocumentOrShadowRoot
API),或者这些规则是否适用于“扁平化”文档?
TLDR;根据 HTML 规范,在 Web 组件的影子根中使用 main
元素是否无效,因为它所使用的页面也包含 main
?
解决方法
“文档”在那里的真正含义是什么?
主要document
在某些方面,影子根是否算作它们自己的封装文档,其中此类规则适用于每个单独的文档或影子根(因为它们共享 DocumentOrShadowRoot API),或者这些规则是否适用于“扁平化”文档?
没有扁平化的文档,从这个意义上说,shadowRoots
更像是 IFrame 中的内容
根据 HTML 规范,在 Web 组件的影子根中使用 main 元素是否无效,因为它所使用的页面也包含一个 main 元素?
这都是关于“语义”的
你引用:
????????????????????????????????????????????????????????????????????????????????????。
它说必须有它确实NOT SAY 不能有
来自 MDN <main>
文档的信息引用:
►的 ???>?????'????????????????????????'????????; 强>◄??????,???????????????????????>,??????????????2>,???????,???> ?????'?????????????'???????????????????????????????。 ??'????????????????????。
因此
<main>
适用于屏幕阅读器等辅助技术。
然后我们会看到一些人认为的 Web 组件“缺陷”。
除非屏幕阅读器被写入“潜入”OPEN shadowRoots,否则它们只会处理document
DOM。当然也无法访问 CLOSED shadowRoots。
a11y 能走多远取决于组件作者
还有很多阅读要做:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。