CSS盒子模型(对内外边距问题着重讲解)

CSS盒子模型(对内外边距问题着重讲解)

  • CSS盒子模型
    • 1. 盒子模型的组成部分
      • 1.1 边框(border)
      • 1.2 内边距(padding)
      • 1.3 外边距 (margin)
    • 2. 块级盒子水中居中
      • 2.1文字居中和盒子居中区别
      • 2.2插入图片和背景图片区别
      • 2.3清除元素的默认内外边距(重要)
    • 3. 外边距合并
      • 3.1相邻块元素垂直外边距的合并
      • 3.2嵌套块元素垂直外边距的合并(塌陷)
    • 4. 盒子模型布局稳定性

CSS盒子模型

盒子是网页布局的关键点,,它帮助我们将网页中的文字,图片按照美工给我们的效果图排列得整齐有序。

网页布局得本质:

  • 首先利用css设置盒子大小、位置
  • 最后将网页元素放入盒子里面

1. 盒子模型的组成部分

盒子模型有元素的内容、边框(border)、内边距(padding)、和外边距(margin)组成。

  • 盒子里面的文字和图片等元素是内容
  • 盒子的厚度成为盒子的边框
  • 盒子内容与边框的距离是内边距(类似单元格的 cellpadding)
  • 盒子与盒子之间的距离是外边距(类似单元格的 cellspacing)
    CSS盒子模型(对内外边距问题着重讲解)_第1张图片

1.1 边框(border)

边框的综合设置如下:

border : border-width || border-style || border-color 
属性 作用
border-width 定义边框粗细,单位是px
border-style 边框的样式(1.none:没有边框即忽略所有边框的宽度;2.solid:边框为单实线(最为常用的) ;3.dashed:边框为虚线;4.dotted:边框为点线)
border-color 边框颜色

注意:
1.通过表格的cellspacing=“0”,将单元格与单元格之间的距离设置为0,但是两个单元格之间的边框会出现重叠,从而使边框变粗。

border-collapse:collapse;表示相邻边框合并在一起,不会重叠加粗。

1.2 内边距(padding)

​ padding属性用于设置内边距。 是指边框与内容之间的距离。
当我们给盒子指定padding值之后, 发生了2件事情:

  1. 内容和边框 有了距离,添加了内边距。
  2. 盒子会变大了。
值的个数 表达意思
1个值 padding:上下左右内边距;
2个值 padding: 上下内边距 左右内边距 ;
3个值 padding:上内边距 左右内边距 下内边距;
4个值 padding: 上内边距 右内边距 下内边距 左内边距 ;

注意:
1.内盒尺寸计算
盒子的实际的大小 = 内容的宽度和高度 + 内边距 + 边框
2.内边距产生的问题
会撑大原来的盒子,通过设置了宽高的盒子,减去相应的内边距的值,维持了盒子原来的大小。
3.padding不影响盒子大小的使用方法
如果没有给一个盒子指定宽度, 此时,如果给这个盒子指定padding, 则不会撑开盒子。

1.3 外边距 (margin)

​ margin属性用于设置外边距。 margin就是控制盒子和盒子之间的距离。
margin值的简写 (复合写法)代表意思 跟 padding 完全相同。

2. 块级盒子水中居中

可以让一个块级盒子实现水平居中必须:

  • 盒子必须指定了宽度(width)
  • 给左右的外边距都设置为auto

常见写法:

margin-left: auto; margin-right: auto;
margin: auto;
margin: 0 auto;

2.1文字居中和盒子居中区别

  1. 盒子内的文字水平居中是 text-align: center, 而且还可以让 行内元素和行内块居中对齐
  2. 块级盒子水平居中 左右margin 改为 auto

2.2插入图片和背景图片区别

  1. 插入图片 我们用的最多 比如产品展示类 移动位置只能靠盒模型 padding margin
  2. 背景图片我们一般用于小图标背景 或者 超大背景图片 背景图片 只能通过 background-position

2.3清除元素的默认内外边距(重要)

为了更灵活方便地控制网页中的元素,制作网页时,我们需要将元素的默认内外边距清除

* {
     
   padding:0;         /* 清除内边距 */
   margin:0;          /* 清除外边距 */
}

3. 外边距合并

使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。
注意:这里只是对于垂直的方向有外边距合并,对于左右的方向是没有外边距合并。

3.1相邻块元素垂直外边距的合并

当上下相邻的两个块元素相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top,则取两个值中的较大者。 这种现象被称为相邻块元素垂直外边距的合并(也称外边距塌陷)。
CSS盒子模型(对内外边距问题着重讲解)_第2张图片
解决方案:尽量给只给一个盒子添加margin值。

3.2嵌套块元素垂直外边距的合并(塌陷)

对于两个嵌套关系的块元素,如果父元素没有上内边距及边框,父元素的上外边距会与子元素的上外边距发生合并,合并后的外边距为两者中的较大者。
CSS盒子模型(对内外边距问题着重讲解)_第3张图片
解决方案:
1.可以为父元素定义上边框。
2.可以为父元素定义上内边距
3.可以为父元素添加overflow:hidden。

4. 盒子模型布局稳定性

根据稳定性来分,建议如下:

按照 优先使用 宽度 (width) 其次 使用内边距(padding) 再次 外边距(margin)。

  width >  padding  >   margin   

原因:

  • margin 会有外边距合并问题
  • padding 会影响盒子大小, 需要进行加减计算(麻烦) 其次使用。
  • width 没有问题(嗨皮)我们经常使用宽度剩余法 高度剩余法来做。

你可能感兴趣的:(CSS学习,前端,CSS,盒子模型)