html(超文本标记语言),是一种用于创建网页的标准标记语言。
<!DOCTYPE html>
<html>
<head>
<title>This is a title</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
html由元素、属性、文档类型声明组成。
A.文档类型声明
在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML。DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。
HTML5 不基于 SGML,所以不需要引用 DTD。
※提示:
- 请始终向 HTML 文档添加 <!DOCTYPE> 声明,这样浏览器才能获知文档类型。
- <!DOCTYPE> 声明对大小写不敏感。
解释:
DTD(Document Type Definition)概念缘于SGML,每一份SGML文件,均应有相对应的DTD。DTD有四个组成如下:
- 元素(Elements)
- 属性(Attribute)
- 实体(Entities)
- 注释(Comments)
SGML:标准通用标记语言(Standard Generalized Markup Language,SGML)是现时常用的超文本格式的最高层次标准,是可以定义标记语言的元语言,甚至可以定义不必采用< >的常规方式。由于它的复杂,因而难以普及。
常见的面试题
1 DOCTYPE有什么作用?标准模式与混杂模式如何区分?它们有何意义?
告诉浏览器使用哪个版本的HTML规范来渲染文档。DOCTYPE不存在或形式不正确会导致HTML文档以混杂模式呈现。
标准模式(Standards mode)以浏览器支持的最高标准运行;混杂模式(Quirks mode)中页面是一种比较宽松的向后兼容的方式显示。
2 HTML5为什么只需要写 ?
HTML5不基于SGML(Standard Generalized Markup Language 标准通用标记语言),因此不需要对DTD(DTD 文档类型定义)进行引用,但是需要DOCTYPE来规范浏览器行为。
HTML4.01基于SGML,所以需要引用DTD。才能告知浏览器文档所使用的文档类型,如下:<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd">
标准模式:让IE的行为更接近标准行为
混杂模式:让IE的行为与(包含非标准特性的)IE5相同。混杂模式是一种比较宽松的向后兼容的模式。混杂模式通常模拟老式浏览器的行为,以防止老站点无法工作。如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式。但不推荐此种做法,因为不同浏览器在这种模式下的行为差异非常大,如果不使用某些hack技术,跨浏览器的行为根本就没有一致性可言
B.元素(文档流)
块级元素、行内元素、内联元素。
1.块级元素和行内元素的区别
- 块元素,总是在新行上开始;内联元素,和其他元素在一行
- 块元素,能容纳其他块元素或者内联元素;内联元素,只能容纳文本或其他内联元素
- 块元素中高度,行高以及顶和底边距都可以控制;内联元素中高,行高及顶和底边距不可改变
2.块元素的特点:
a.总是在新行上开始;
b.高度、行高以及外边距和内边距都可控制;
c.宽度默认是它容器的100%,除非设定一个宽度;
d.他可以容纳内联元素和其他块元素。
3.内联元素的特点:
a.和其他元素都在同一行;
b.高,行高及外边距和内边距不可改变;
c.宽度就是它的文字和图片的宽度,不可改变;
d.内联元素只能容纳文本或者其他内联元素。
常见的块级元素
定义地址 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
定义表格标题 | |||||||||||||||||||||||||||||
定义列表中定义条目 | |||||||||||||||||||||||||||||
定义文档中的分区或节 | |||||||||||||||||||||||||||||
定义列表 | |||||||||||||||||||||||||||||
定义列表中的项目 | |||||||||||||||||||||||||||||
定义一个框架集 | |||||||||||||||||||||||||||||
创建 HTML 表单 | |||||||||||||||||||||||||||||
定义最大的标题 | |||||||||||||||||||||||||||||
定义副标题 | |||||||||||||||||||||||||||||
定义标题 | |||||||||||||||||||||||||||||
定义标题 | |||||||||||||||||||||||||||||
定义标题 | |||||||||||||||||||||||||||||
定义最小的标题 | |||||||||||||||||||||||||||||
创建一条水平线 | |||||||||||||||||||||||||||||
元素为 fieldset 元素定义标题 | |||||||||||||||||||||||||||||
标签定义列表项目 | |||||||||||||||||||||||||||||
为那些不支持框架的浏览器显示文本,于 frameset 元素内部 | |||||||||||||||||||||||||||||
定义在脚本未被执行时的替代内容 | |||||||||||||||||||||||||||||
定义有序列表 | |||||||||||||||||||||||||||||
定义无序列表 | |||||||||||||||||||||||||||||
标签定义段落 | |||||||||||||||||||||||||||||
定义预格式化的文本 | |||||||||||||||||||||||||||||
常见行内元素常见内联元素
C.GUI渲染线程我们尽量采用语义化标签,而不是只会用div,span。采用语义化标签可以给css选择器的命名带来便利,无需多想创建选择器的名称。我们需要减少元素的深入层叠化。 为啥需要减少元素的深入层叠化呢? 从图中可以看的出来,总结一下
HTML解析,构建DOM树
浏览器是如何处理的:
最后的DOM树是什么样子的呢 面试题A 页面导入样式时,使用link和@import有什么区别?
B 简述一下你对HTML语义化的理解?
文献1.https://www.cnblogs.com/iceflorence/p/6626187.html |