与传统 div 相比,使用 html5 语义标签有什么缺点吗?

Are there any downsides to using html5 semantic tags over traditional divs?

The inverse question has been asked multiple times。但是,我既找不到任何缺点,也找不到令人信服的证据证明它们完全不存在。

我完全支持进步和语义文档。事实上,我很久以前就开始在我的标记中使用新的语义标签(感觉很好!)。我仍然想知道是否有任何(可能是模糊的)注意事项应该知道。

一些旧版浏览器无法识别 html5 元素。充其量这意味着您必须为 CSS 中的那些元素定义默认样式规则。

在某些情况下,您可能需要应用垫片,或者在这种情况下,应用 shiv: https://css-tricks.com/snippets/javascript/make-html5-elements-work-in-old-ie/

同样,旧浏览器(我在看你,IE)甚至不会将它们识别为元素,所以是的,它可能会改变你的 DOM 的结构。另外,我看到旧浏览器只是将 html5 标签输出为纯文本,因此您会在内容中看到 <article> 标签。


如果您碰巧遇到无法支持新的 html5 元素的情况,一个方便的解决方法是使用 div 并为它们提供与所需元素名称匹配的 类。因此,例如您将使用:

<div class="article"> 代替 <article>

这种方法的好处是可以坚持新的 "mental model",您仍然可以根据文章和旁白之类的内容来考虑您的内容。这种方法还有一个好处,就是在将来某个时候将代码升级到完整的 html5 规范相对简单,因为您所要做的就是搜索 类 并将 div 替换为合适。