- 参考资料:
一、什么是视觉格式化模型
二、关于模型的一些基础知识
2.1 包含块
- 包含块举例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>包含块</title>
</head>
<body>
<div class="container">
<div class="div1">div</div>
<p class="p p1">the first paragraph</p>
<p class="p p2">
<em>the<strong>second</strong>paragraph</em>
</p>
</div>
</body>
</html>
2.2 正常流
- 指西方语言文本从左向右、从上向下显示。
- 要让一个元素不在正常流中,可通过使元素成为浮动元素或者定位元素。
2.3 非替换元素
- 非替换元素:
(X)HTML
的大多数元素都是非替换元素,他们将内容直接告诉浏览器,将其显示出来
- 行内非替换元素特点:
- 行内非替换元素添加
padding-top
或padding-bottom
,不影响行框高度,但内容去高度会变化margin-top
,margin-bottom
对行框没有任何影响- 添加左右边距会影响行内非替换元素水平位置
- 以下这两个
demo
是关于行内非替换元素与行内替换元素的对比:
- 行内非替换元素:【点击打开demo1】
- 行内替换元素:【点击打开demo2】
2.4 替换元素
- 替换元素:替换元素是浏览器根据元素的标签和属性,来决定元素的具体显示内容
- 替换元素:
audio
和canvas
在某些特定情况下为替换元素- 行内替换元素:
input
/textarea
/select
(display:inline-block
);img
/object
/iframe
(display:inline
)
- 特点:
- 替换元素是其内容不受
css
视觉格式化模型控制的元素- 在这些元素没有实际的内容,是个空元素
- 浏览器会根据元素的标签类型和属性来显示这些元素
- 替换元素也在其显示中生成了框 — 替换元素通常有其固有的尺寸(一个固有的宽度、一个固有的高度和一个固有的比率)
- 替换元素可增加其行框高度,带不影响
line-height
— 内容区高度值 =pading-top
+padding-bottom
+margin-top
+margin-bottom
+height
(要向替换元素居中,可设置line-height = height
)
- 这个
demo
是关于说明行内替换元素有哪些。【点击打开demo】
2.5 块级元素
- 当元素的
CSS
属性display
的计算值为block
,list-item
,table
,flex
或grid
时,它是块级元素。- 块级元素在正常流中,会在其框前和框后生成“换行”,因此,处于正常流中的块级元素会垂直摆放。
- 一个元素的
width
被定义为从左内边界到右内边界的距离- 一个元素的
height
则是从上内边界到下内边界的距离
2.6 行内元素
- 行内元素不会在框前或框后生成“行分隔符”。
- 行内元素有:
strong
、span
、em
、i
、b
2.7 根元素
- 根元素就是位于文档树顶端的元素。
- 在
HTML
文档中,就是<html
>- 在
XML
文档中,可以是该语言允许的任何元素