CSS深入理解2 | 青训营笔记

112 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

一、盒模型

1. 了解网页布局的本质

  1. 准备相关的网页元素,一般都是盒子box
  2. 利用CSS设置盒子的样式,摆放在相应的位置(核心部分)
  3. 往盒子里面填充内容

2. 盒子模型(Box Model)

顾名思义,盒子就是用来装东西的,它装的东西就是HTML元素的内容。

1.盒子的组成

主要由四部分组成:margin(外边距)、border(边框)、padding(内边距)、content(内容)

image.png

2. border:盒子的边框

属性:

  • border-width:设置边框宽度,单位:px
  • border-style:定义边框样式,属性值:solid(实线)、dashed(虚线)、dotted(点线)、double(双线)
  • border-color:设置边框颜色

例:设置一个div的边框颜色,样式以及宽度

  • 分开写:
      div{
            border-color:blueviolet;  
            border-style:dashed;
            border-width: 5px;
        }
  • 边框的复合写法 -border:宽度,样式,颜色;
    注:顺序可颠倒,效果一样
     border:5px dashed blueviolet; 

image.png

  • 分别设置上下左右边框
    border-top | bottom | left | right:分别代表上下左右边框
    也可以单独设置上下左右边框的color、style、width属性,属性中间用“-”连接
         border-top:dashed 5px blueviolet;
         border-right: 5px solid red;
         border-left: 5px double pink;
         border-bottom: 5px solid rgb(60, 198, 83);

image.png

  • 合并相邻的边框
    border-collapse:collapse; 我们在设置表格的时候如果要设置相邻单元格的边框大小,他们的边框宽度会叠加在一起,就会显得边框较宽,这个时候我们就可以使用border-collapse这一属性合并相邻的边框,达到我们想要的效果。
  • 边框会影响盒子的大小
    解决方案:
    1.测量盒子时,不测量边框
    2.如果测量时包含了边框,用width/height减去边框宽度

3. padding:盒子的内边距

内边距即为盒子的边框与内容之间的距离

  • 属性
    pdding-top:上内边距
    pdding-left:左内边距
    padding-right:右内边距
    padding-bottom:下内边距
    例:
 div{
        width: 300px;
        height: 100px;
        border: 5px solid pink;
      }

image.png

  padding: 30px; //设置内边距为30px

image.png

  • 简写
    四值法:上、右、下、左
    三值法:上、左右、下
    二值法:上下、左右
    一个值:上下左右
  • 内边距会影响盒子
    padding会影响盒子大小(若盒子已经设置了宽度和高度,指定内边距会撑开盒子)
    若盒子没有指定宽高。则此时padding不会撑大盒子

3. margin:外边距

设置外边距,用于控制盒子与盒子之间的距离

  • 属性
    margin-top:上外边距
    margin-left:左外边距
    margin-right:右外边距
    margin-bottom:下外边距

margin的简写方式与padding一样,此处就不再介绍了

  • 外边距设置块级盒子水平居中

条件:(1)盒子必须指定宽度
(2)盒子必须把左右外边距设置为auto

div{
    width: 100px;
    margin: 0 auto;
    }

image.png

  • 行内元素或行内块元素水平居中
    给其父元素添加 text-align : center
  • 外边距合并问题
    margin定义块元素的垂直外边距时,可能会出现外边距的合并
    情况一:相邻块元素垂直外边距的合并
 .first{
       width: 100px;
       height: 100px;
       margin: 50px auto;
       border: 5px solid red;
        }
 .second{
        width: 100px;
        height: 100px;
        border: 5px solid pink;        
        margin: 50px auto;
  }

image.png

由图可见,本来两个盒子间的距离应该为100px;但实际只有50px,此时就出现了外边距的合并。此外,如果上下两个元素的外边距值不同,使用margin值较大的作为他们的垂直间距。
例如: 上边盒子margin-bottom为20px,下边盒子的margin-top为30px,则它们的垂直间距为30px。
情况二:嵌套块元素垂直外边距的合并