盒子模型

257 阅读4分钟

盒子模型

所有html元素都可以看做盒子,CSS盒模型本质上就是一个盒子,封装周围的html元素,包括:外边距、边框、内边距、内容 。我们看到的一张网页,就是一个一个盒子堆起来的。

我们学习盒子模型也就是说需要学习以下这些属性,来设置盒子模型:

  1. width 盒子内容宽度
  2. height 盒子内容高度
  3. padding 盒子的内边距(补白),盒子内容与盒子边框之间的距离,上下左右都有padding
  4. margin 盒子的外边距 盒子边框之外的距离,也分上右下左
  5. border 盒子的边框 盒子的边框也是有上边框,右边框,下边框,左边框
  6. background 盒子背景 背景默认情况下会填充内容和padding

盒子模型的重点:

  1. 对于行内标签来说,width和height设置无效
  2. width属性默认值为auto,块元素的贪婪性和行内元素的懒惰性
  3. 对于行内元素而言,其宽度有内容本身决定,而其高度则有font-size决定
  4. 有些标签有默认的padding值,如ul、ol等。我们可以在body的属性中加入 *{padding:0}属性

对于块级元素,我们可以对它设置盒子模型的6大属性:

1、margin

外边距,即盒子与盒子之间的距离,分上、下、左、右四个方向的margin

margin在定义时有四种方式,分别是后面跟有一个、两个、三个、四个数值

margin:10px 10px 10px 10px;

一个数值:定义外边框

两个数值:分别定义上下、左右边框

三个数值:分别定义上、左右、下边框

四个数值:分别定义上、右、下、左边框

有些标签有默认的margin,我们可以在body的属性中加入*{margin:0}

margin对于块级标签在四个方向上都有作用,对于行内标签,只在水平方向上有效,在垂直方向上无效

margin重叠(塌陷):

  • 块级标签在垂直方向上会发生margin重叠现象

  • 兄弟元素之间的重叠:上面盒子的下margin和下面盒子的上margin重叠,中间的margin大小是取大优先

    解决重叠:

    • display:inline;将块级元素变为行级元素
    • 浮动(浮动元素是不会塌陷的)
  • 父子元素之间的重叠:父元素设置margin-top和父中第一个子元素设置的margin-top会重叠

    解决重叠:

    • 给父元素设置border-top 不想要边框,使用transparent
    • 给父元素设置padding-top
    • display:inline;将块级元素变为行级元素
  • margin可以设置负值。

2、border

设置盒子的边框

    order 粗细 线型 颜色;
    border:1px solid red;
    border-top  上边框
    border-righ  右边框
    border-bottom  下边框
    border-left  左边框
    border-width  宽度  
    border-style  样式 
    border-color  颜色  
    border  在页面是占空间的

3、padding

设置所有内边距属性

  1. 内边距:内容与border之间的距离
  2. 一个数值:定义外边框
  3. 两个数值:分别定义上下、左右边框
  4. 三个数值:分别定义上、左右、下边框
  5. 四个数值:分别定义上、右、下、左边框

应用:调整内容与border之间的间隙 padding在页面是占空间的

4、content

内容的宽度和高度

  1. width:内容的宽度
  2. height:内容的高度
  3. 块级标签可以设置宽度和高度,行内标签不能设置宽度和高度
  4. 行内标签它的宽度由内容决定,高度由font-size决定
  5. width和height可以设置百分比,该百分比是父元素的百分比。

5、background

设置盒子的背景

  1. background-color:设置盒子的背景颜色
  2. background-image:设置盒子背景为图片
  1. 默认水平和垂直方向都会平铺
  2. 如果空间不足,图片也会显示,只是显示不完整
  3. url后面的路径引号可加可不加
  4. 背景图片默认会填充border,padding,content
  1. background-repeat:设置是否及如何重复背景图像
  2. background-position:设置背景图像的起始位置
  3. background-attachment:设置背景图像是否固定或者随着页面的其余部分滚动