盒模型

认识盒模型

  1. 行内元素
  2. 块级元素
  3. 所有HTML标签都可以看成矩形盒子,由width、height、padding、border构成,称为“盒模型”

width和height属性详解

  1. width
    • 盒子内容的宽度
    • width属性通常是px,移动端开发会涉及百分数,rem等单位
    • 当块级元素(div、h系列、li等)没有设置width属性是,它将自动撑满,但这并不意味着width可以继承
  2. height
    • 表示内容的高度
    • width属性通常是px,移动端开发会涉及百分数,rem等单位
    • 盒子的height属性如果不设置,它将被内容被自动撑开,如果没有内容,则height默认是0
    • 高度省略掉,内容能被自动撑开

padding属性详解

  1. padding 是盒子的内边距,即盒子边框内壁到文字的距离
  2. padding 是四个方向的
    • padding-top
    • padding-left
    • padding-right
    • padding-bottom
  3. padding 四数值写法
    • padding:10px 20px 10px 20px 上右下左
  4. padding 三数值写法
    • padding:10px 20px 30px 上 左右 下
  5. padding 二数值写法
    • padding:10px 20px 上下,左右
  6. padding 一数值写法
    • padding:10px 四个方向都是10px

margin属性详解

  1. margin是盒子的外边距,盒子和其它盒子之间的距离
  2. margin 是四个方向的
    • margin-top
    • margin-left
    • margin-right
    • margin-bottom
  3. margin 四个方向
    • margin:10px 20px 10px 20px 上右下左
  4. margin 三数值写法
    • margin:10px 20px 30px 上 左右 下
  5. margin 二数值写法
    • margin:10px 20px 上下,左右
  6. margin 一数值写法
    • margin:10px 四个方向都是10px
  7. margin 的塌陷
    • 垂直方向的margin有塌陷现象:小的margin 会塌陷到大的margin 中,从而margin不叠加,只以大的值为准
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
       .box5{
      width: 200px;
      height: 200px;
      background-color: aqua;
      margin-bottom: 24px;
      }
      .box6{
      width: 200px;
      height: 200px;
      background-color: rgb(28, 206, 108);
      margin-top: 32px;
      }
      margin-top 32px 为准
    • 左右方向不会发生塌陷现象
  8. 一些元素有默认的margin
    • 比如(body、ul、p) 等,在开始制作网页的时候,要将它们清除
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
       *{
      margin: 0;
      padding: 0;
      }

      body,
      ul,
      p {
      margin: 0;
      padding: 0;
      }
      * 通配符有效率问题
  9. 盒子的水平居中
    • 将盒子左右两边的margin都设置为auto,盒水平居中
    • margin:0 auto
    • 文本居中 text-align:center 和盒子水平居中是两个概念

盒模型计算

  1. 盒子的总宽度 = width + 左右border + 左右padding
  2. 盒子的总高度 = height + 上下border + 上下padding

box-sizing属性

  1. 将盒子添加 box-sizing:border-box 之后,padding、border 变为内缩,不再外扩

display

  1. 行内元素
    • 能并排显示
    • 不能设置宽高
    • width自动收缩
    • a、span、em、b、u、i 等
  2. 块级元素
    • 不能并排显示
    • 能设置宽高
    • width自动撑满
    • div、section、header、h系列、li、ul等
  3. 行内块元素
    • img、input等
    • 既能并排显示、又能设置宽高
  4. 行内元素和块级元素的互相转换
    • display:block
      • 转换为块级元素
    • display:inline
      • 转为行内元素
    • disaplay:inline-block
      • 即将元素转为行内块
    • display:none
      • 可以将元素隐藏,元素将彻底放弃位置,如同没有写标签一样
    • visibility:hidden
      • 也可以将元素隐藏,但是元素不放弃自己的位置