盒模型

2022-04-17  本文已影响0人  心存美好

盒模型

CSS 盒模型 (Box Model) 规定了元素框处理元素内容、内边距、边框 和 外边距 的方式

1.标准盒模型(浏览器默认)

1.1. 盒模型有哪些属性构成
11.png
盒子模型涉及到的四个区域,包含5个属性
  1. width/height 内容区域: 这两个属性决定元素内容content区域的的大小

  2. padding 内边距:元素的内容边界到边框之间的距离

  3. border 边框:元素的边框

  4. margin 外边距: 边框以外是外边距,外边距默认是透明的,因此不会遮挡其后任何元素。

注意:

在 CSS 中,width 和 height 指的是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸

1.2 边框 border
1.2.1 边框三要素:

单样式写法:

  1. 边框大小(粗细) border-width

  2. 边框样式 border-style

  3. 边框颜色 border-color

复合写法:

border :1px solid #000;

1.2.2 边框的大小

大小 就是像素值 px

border-width: 20px

边框大小可以继续细分

因为盒子有四个边

  1. border-top-width: 10px;

  2. border-right-width: 10px;

  3. border-bottom-width: 10px;

  4. border-left-width: 10px;

1.2.3 边框的样式

border-style:solid;

边框的样式值:
  1. none 无边框

  2. solid 实线

  3. dashed 虚线

  4. dotted 点状线

  5. double 双线

边框样式细分:
  1. border-top-style: solid;

  2. border-right-style: solid;

  3. border-bottom-style: solid;

  4. border-left-style: solid;

1.2.4 边框颜色
  1. 十六进制颜色值 #CC00FF

  2. 英文单词: red blue

边框颜色细分
  1. border-top-color: #000;

  2. border-right-color: #000;

  3. border-bottom-color: #000;

  4. border-left-color: #000;

1.2.5 单独定义某条边的综合样式
  1. border-top:1px solid #CC00FF;

  2. border-right:5px solid red;

  3. border-bottom:10px dotted #660033;

  4. border-left:15px double blue;

1.3. 内边距 padding

元素内容到边框之间的距离

1.3.1 内边距的复合样式(可以设置4个值)
padding:10px 20px 30px 40px;
1.3.2 内边距复合样式不同值

padding:; 可以设置多个值

  1. 四个值

    padding:上 右 下 左;

  2. 三个值

    padding: 上 左右 下;

  3. 两个值

    padding: 上下 左右;

  4. 一个值

    padding: 上下左右;

注意: 内边距不允许使用负值

1.3.3 内边距单样式
  1. padding-top 上面(顶部)内边距

  2. padding-right 右边内边距

  3. padding-bottom 下面(底部)内边距

  4. padding-left 左边内边距

1.4. 外边距 margin

margin 元素边框外,元素与元素 或元素与浏览器之间的距离

1.4.1 外边距复合样式
margin:10px 20px 30px 40px;
1.4.2 外边距复合样式的不同值

margin:; 可以设置多个值

  1. 四个值

    margin:上 右 下 左;

  2. 三个值

    margin: 上 左右 下;

  3. 两个值

    margin: 上下 左右;

  4. 一个值

    margin: 上下左右;

1.4.3 外边距单样式
  1. margin-top 上面(顶部)外边距

  2. margin-right 右边外边距

  3. margin-bottom 下面(底部)外边距

  4. margin-left 左边外边距

1.5. 决定盒模型的类型
<style>
    div{
        box-sizing:content-box;/*标准盒模型  盒子的宽度高度是给content设置的*/
    }
</style>

2. 怪异盒模型

怪异盒模型需要手动设置属性

box-sizing:border-box; 
22.png
2.1. 怪异盒模型的原理
  1. width/height padding * 2 + border * 2 + content(内容大小)

  2. padding 内边距:元素的内容边界到边框之间的距离

  3. border 边框:元素的边框

  4. margin 外边距: 边框以外是外边距,外边距默认是透明的,因此不会遮挡其后任何元素。

2.2. 怪异盒模型和标准盒模型的对比
2.2.1 所设置的width/height 值作用的区域不同
  1. 标准盒模型

    width/height 是作用在content区域内

  2. 怪异盒模型

    width/height 是作用在content区域+padding区域+border区域

2.2.2 盒子的大小计算不同
  1. 标准盒模型

    盒子的占位 = width + padding(左右) + border(左右) + margin(左右)

    盒子的占位 = height+ padding(上下) + border上下) + margin(上下)

    盒子的宽度= width + padding(左右) + border(左右)

    盒子的高度= height+ padding(上下) + border上下)

  2. 怪异盒模型

    盒子的占位 = width + margin(左右)

    盒子的占位 = height+ margin(上下)

    盒子的宽度 = width

    盒子的高度 = height

3.外边距合并

3.1. 同级元素发生外边距合并

当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并。请看下图:

33.png
3.2. 父子级之间发生外边距合并

当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并。请看下图:

44.png
3.3. 外边距并的规则
  1. 正正取最大值 =====> 50 60 取60 . 正负值相加 =====> 50 -60 取-10 . 负负取最负 =====> -50 -60 取-60
3.4. 外边距合并的解决办法
  1. 同级元素给第二个元素浮动,添加绝对定位,单独设置某一个元素inline-block

  2. 父子级元素外边距合并解决办法

    • 给父级设置内边距代替子级的外边距 记住

    • 给父级加边框

    • 给父级overflow:hidden;

    • 设置绝对定位

记住所有的外边距的触发都是在垂直方向上

必须是在普通文档流的块级元素才会触发外边距合并,这是大前提!!!

<!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>
    * {
      margin: 0;
      padding: 0;
    }

    .wrap {
      height: 100px;
      ;
      background-color: #ccc;
      margin-top: 100px;
    }

    .box {}

    .item {
      float: left;
      width: 25%;
      box-sizing: border-box;
      background-color: pink;
      padding: 10px;
    }

    .item div {
      height: 100%;
      line-height: 50px;
      background-color: #fff;
    }
  </style>
</head>

<body>
  <!-- /*box-sizing:border-box;怪异盒模型根据屏幕宽度实现盒子之间间距不变,改变内容区大小*/ -->
  <div class="wrap">
    <div class="box">
      <div class="item">
        <div>盒子一</div>
      </div>
      <div class="item">
        <div>盒子一</div>
      </div>
      <div class="item">
        <div>盒子一</div>
      </div>
      <div class="item">
        <div>盒子一</div>
      </div>

    </div>
    <div class="box">
      <div class="item">
        <div>盒子二</div>
      </div>
      <div class="item">
        <div>盒子二</div>
      </div>
      <div class="item">
        <div>盒子二</div>
      </div>
      <div class="item">
        <div>盒子二</div>
      </div>
    </div>
  </div>
</body>

</html>
上一篇下一篇

猜你喜欢

热点阅读