一、面试官想考什么?
大家都知道doctype声明是写在html文档最顶部的,这个声明告诉浏览器将以哪种规范或者哪个版本来解析你的html dom内容。而且HTML5以后呢,写法统一了。这里丝毫没有考点啊,面试中最容易中招的就是我们习以为常的东西,每天都接触的东西,但是却容易忽略的东西。其实很多原理性的东西倒还好,谁面试前不准备准备,使劲儿背一背,反正面试官看过原理代码的也不多,但这些基础东西却很容易让人发蒙。
<!DOCTYPE html>
<html>
<head>
......
</head>
<body>
......
</body>
</html>
二、为什么H5以后就单纯的写<!DOCTYPE html>就可以了呢?
<!DOCTYPE> 声明不是一个 HTML 标签;它是用来告知 Web 浏览器页面使用了哪种 HTML 版本。
在 HTML 4之前,<!DOCTYPE> 声明需引用 DTD (文档类型声明),因为 HTML 4之前 是基于 SGML (Standard Generalized Markup Language 标准通用标记语言)。DTD 指定了标记语言的规则,确保了浏览器能够正确的渲染内容。
HTML5 不是基于 SGML,因此不要求引用 DTD。
所以,这里你需要重点记住DTD和SGML这两个词,做开发大家都是写代码,那怎么能比那些小low low 高级一些呢,当然是能够说出一些名词啦
三、那么HTML4的时候,都有哪些声明呢?
// HTML 4.01 Strict
// 这个 DTD 包含所有 HTML 元素和属性,但不包括表象或过时的元素(如 font )。框架集是不允许的。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
// HTML 4.01 Transitional
// 这个 DTD 包含所有 HTML 元素和属性,包括表象或过时的元素(如 font )。框架集是不允许的。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
// HTML 4.01 Frameset
// 这个 DTD 与 HTML 4.01 Transitional 相同,但是允许使用框架集内容。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
// XHTML 1.0 Strict
// 这个 DTD 包含所有 HTML 元素和属性,但不包括表象或过时的元素(如 font )。框架集是不允许的。结构必须按标准格式的 XML 进行书写。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
// XHTML 1.0 Transitional
// 这个 DTD 包含所有 HTML 元素和属性,包括表象或过时的元素(如 font )。框架集是不允许的。结构必须按标准格式的 XML 进行书写。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
// XHTML 1.0 Frameset
// 这个 DTD 与 XHTML 1.0 Transitional 相同,但是允许使用框架集内容。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
// XHTML 1.1
// 这个 DTD 与 XHTML 1.0 Strict 相同,但是允许您添加模块(例如为东亚语言提供 ruby 支持)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
大概是有7种,如上代码片段。是都要记下来吗?当然不是,着谁记得住啊。只要记住3个重点就可以了。严格模式(或者是标准模式,HTML 4.01 Strict)、兼容模式(HTML 4.01 Transitional)还有XTHML的时候的写法,而且你甚至不用给面试官说各种的写法,说出有这3种东西就行。
四、面试官问这个问题你要小心啦!
因为现在大家几乎都用HTML5标准了,一旦面试官问这个问题,那么这个公司可能是一个传统企业的技术团队,他们需要用到之前的技术来做前端页面。所以即便面试通过了,你要思考是否要去一个传统行业,做着旧技术,甚至他们可能还在大量的用着jquery,(禅道很多人都用过吧),还是希望去一个新的互联网公司,不断尝试新技术。
五、严格模式和兼容模式有什么区别吗?
既然气氛都烘托到这里了,你都来面试了,肯定逃不掉这两种模式的区别。其实现在很多人都用不到了,更别提区别了。但有一说一,你能说出来,对于你的工作经验表现还是有一定的作用的,也许你就是那个最靓的仔。毕竟公司都喜欢经验多的,阅历丰富的,最好还是工资低一点的。
盒模型:严格模式获取的元素宽度就是width值
兼容模式更像display: flex-box 宽度 = width + padding + border
兼容模式下可以给类似span这种行内元素设置width 和 height ,是不是很神奇
兼容模式下我们非常喜欢的margin: 0 auto;会失效,是不是也很神奇。
这里基本记住这3条也就可以啦