2014-09-21 61 views
2

我在一家公司做了一些实习来重新建立自己的网站。 “问题”是他们仍然使用4.01文档类型,所以我没有机会得到一些漂亮的HTML5,我想。但后来我看到其他人使用<nav>标签实施了响应式菜单,并且它工作正常。我很困惑:HTML5元素在非HTML5文档类型中“工作”吗?

  • (HTML5)文档类型究竟干什么?
  • 如果HTML5元素在HTML4中正确显示,那么两者之间有什么区别?

回答

3

HTML5 doctype只提供一种用途:触发标准模式。而已。该HTML5 spec实际上这个规定直接:

注:文档类型所需的遗留原因。省略时,浏览器倾向于使用与某些规范不兼容的不同渲染模式。在文档中包含DOCTYPE可确保浏览器尽最大努力遵循相关规范。

doctype的这种特定结构是在所有主流浏览器中触发标准模式,同时防止文档被误认为某种其他文档类型所必需的。在SGML中,这个“HTML5文档类型”实质上没有意义,因为它既没有系统标识符也没有公共标识符。但是从来没有人实现过SGML(甚至在任何基于SGML的变体中都不包含HTML),这意味着浏览器将忽略这一事实并愉快地在标准模式下呈现标记。

无论您使用哪种doctype,只要您有一个doctype,就不会影响浏览器如何呈现标记或实现相关的API。也就是说,浏览器使用的“标准模式”与您使用的任何类型相同。验证器在doctype声明中使用系统或公共标识符来决定哪种标准来验证标记,但浏览器从不使用这些信息来决定是否支持某项功能。

当然,不言而喻,如果您有权访问HTML源代码,那么如果您使用HTML5功能,则应该切换到HTML5文档类型。真的没有什么理由不这样做。

+0

我不太清楚,如果我明白这一点。因此,无论您使用哪种doctype,浏览器都会尝试将代码呈现为标准方式(“标准”是在该浏览器中实现的“标准”)。因此,如果浏览器与HTML5兼容,即使使用了较早的文档类型,它也会像HTML5一样呈现文档。 此外,这是否意味着像localStorage这样的功能也可以在HTML4工作区中工作? (要回答您的问题,很遗憾,我无权访问文档类型,因此我无法将其替换为HTML5)。 – 2014-09-21 10:12:20

+1

@Bram Vanroy:是的,浏览器只查看文档类型,而不是其内容。是的,像localStorage这样的功能似乎无论如何都有效。 – BoltClock 2014-09-21 10:14:47

0

它正在工作,因为现代浏览器不“真正”关心文档类型。他们所做的只是触发“标准模式” - 确实是一件好事,必要的事情,但您使用的具体文档类型几乎是无关紧要的。