HTML css——常规流

常规流

盒模型: 规定单个盒子的规则

视觉格式化模型(布局规则):页面中多个盒子排列规则

视觉格式化模型 大体上将页面中盒子分为三种方式:

  1. 常规流
  2. 浮动
  3. 定位

常规流布局

文档流 普通文档流 常规文档流

所有元素默认情况下都属于常规流布局

总体规则:块盒独占一行 行盒水平依次排列

包含块(containing block): 每个盒子都有他的包含块,包含块决定盒子的排列区域。

绝大部分情况下,盒子的包含块,为其父元素的内容盒

块盒

  1. 每个块盒的总宽度 必须刚好等于包含块的宽度

宽度的默认值 auto

margin 的取值也可以是auto 不过默认值为0

auto:将剩余空间吸收掉

width吸收能力强于margin 所以都是auto时,margin为0

若宽度 边框 内边距 外边距计算后,仍然有剩余空间 该剩余空间被margin-right全部吸收

常规流中,块盒在其包含块中居中,可以定宽,然后左右margin设置auto

margin:0 auto;
  1. 每个块盒垂直方向上的auto值

height:auto 适应内容高度

margin:auto 表示0

  1. 百分比取值

padding 宽 margin 可以取值百分比

以上的所有百分比 是相对于包含块的宽度 与高度无关

高度百分比:
3.1 包含块的高度取决于子元素高度,设置百分比无效

3.2 包含块的高度不取决子元素高度,百分比相对于父元素高度

  1. 上下外边距的合并

两个常规流块盒,上下外边距相邻,会合并

两个外边距取最大值

父子元素也会出现合并现象,如果不想合并,可以对父元素添加

border: 3px solid;
 或者:
padding-top: 50px;

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            margin: 0;

        }
        .parent{
            background-color: lightblue;
            height: 300px;
            margin-top: 50px;
            /* border: 3px solid; */
            padding-top: 50px;
        }
        .child{
            height: 100px;
            background-color: red;
            margin-top: 50px;
            width: 200px;

        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="child"></div>

    </div>
    
</body>
</html>
上一篇:C++标准 — C++14特性


下一篇:智能指针遇到的一些解答