1. HTML5 为什么只需要写<!DOCTYPE HTML>,而不需要引入 DTD?
To know: 声明一般位于文档的第一行,它的作用主要是告诉浏览器以什么样的模式来解析文档。一般指定了之后会以标准模式来 进行文档解析,否则就以兼容模式进行解析。在标准模式下,浏览器的解析规则都是按照最新的标准进行解析的。而在兼容模式下,浏览器会以向后兼容的方式来模拟老式浏览器的行为,以保证一些老的网站的正确访问。
在 html5 之后不再需要指定 DTD 文档,因为 html5 以前的 html 文档都是基于 SGML 的,所以需要通过指定 DTD 来定义文档中允许的属性以及一些规则。而 html5 不再基于 SGML 了,所以不再需要使用 DTD。
(其中,SGML 是标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言,是所有电子文档标记语言的起源。)
2. link和@import区别?
①导入内容:@import是css的语法规则,只能导入样式表;link是HTML提供的标签,除了加载css文件,还可以定义RSS、rel连接属性、引入网站图标等;
②加载先后:link标签引入的css会被优先加载,@import引入的会在页面加载完毕后被加载;
③兼容问题:link标签是HTML元素,不存在兼容问题,@import是css2.1才有的语法,只能在IE5+被识别;
④使用差异:可以通过js操作DOM,插入link标签来改变样式,而@import不可以(因为DOM是基于文档的)。
3. HTML语义化理解?
常用语义化标签有<header><footer><main><nav><title>,好处如下:
①正确的标签做正确的事
②即使没有css的渲染,也可以以易于阅读的文档形式呈现
③使文档内容更结构化,便于浏览器解析器解析
④搜索引擎也是依赖于html标记分权重的,利于seo
⑤源码阅读者便于阅读与维护