03 css盒子模型

187 阅读3分钟

概念

盒子模型 : 就是把html页面中的布局元素看成一个矩形的盒子

CSS盒子模型 本质 是一个盒子,封装周围的html元素,包括 边框,内外边距和实际内容

盒子模型的组成

image.png

border 边框

border-width:  边框宽度
border-color:  边框颜色
border-style:  边框样式

border-style : solid 设置为实线 image.png

image.png

border-style: dotted 设置为点线

image.png

image.png

border-style: dashed 设置为破折号线 image.png

image.png

边框的复合写法 border
没有先后顺序 
border:1px solid red

边框分开写 top left right bottom

border-top:1px solid red
border-left:1px solid green
....

image.png

image.png

表格的细线边框

image.png

image.png

边框会影响盒子的实际大小

给一个盒子 的 宽度,然后再给他边框,那么总宽度就是 原宽度 + 边框宽度

内边距 padding-

内边距是 盒子 与 盒子里面的内容的距离

padding-left : 左边距
padding-top : 上边距
padding-right : 右边距
padding-bottom : 下边距

image.png

image.png

内边距的复合写法

padding1个值 (上下左右都是这个值)
paddingAB值 (A值 :上下 ; B值:左右)
paddingAB值 C值 (A值 :上 ; B值 :左右 ; C值 : 下)
paddingAB值 C值 D值(A值 :上 ; B值 :右 ; C值 : 下 ; D值:左)

1个值 image.png

2个值

image.png

3个值

image.png

4个值

image.png

内边距也会影响盒子的实际大小

给 盒子加 内边距 会撑大盒子

就让 测出来的盒子宽度 - 内边距 = 本身的宽度

padding不会撑开盒子的情况

盒子本身没有指定 width/height 属性,此时padding 不会撑开盒子大小

外边距 margin

外边距是 盒子与盒子之间的距离

margin-left : 左边距
margin-top : 上边距
margin-right : 右边距
margin-bottom : 下边距

image.png

image.png

margin的复合写法

与padding的基本差不多

margin基本应用 01 ---- 块级盒子水平居中

水平居中 : 左右居中 ,上下随便

满足条件

  • 设置宽度
  • margin: 0 auto

image.png

margin基本应用 02 ---- 行内元素 或者 行内块元素 水平居中

给 行内元素/行内块元素 设置 水平居中

image.png

  1. 找到要设置的 行内元素/行内块元素 的父元素
  2. 给父元素 设置 text-align:center

外边距合并 --- 嵌套块元素塌陷 (面试题)

image.png

对于两个 嵌套关系的 块元素,给父元素一个外边距,同时子元素也有一个外边距,那么此时 父元素会 塌陷较大的外边距

所以上面的 图如下所示

image.png
解决办法 (3种) 都是给父元素添加的

1、 给父元素定义上边框

image.png

image.png

2、给 父元素定义上内边距

image.png

image.png

3、给 父元素 设置 overflow:hidden

image.png

清除内外边距

因为 网页元素很多都带有默认的内外边距,不同浏览器默认的都不一样 ,所以我们要清除掉

写在 css的第一行 
*{
    margin0padding : 0;
}

image.png

行内元素 尽量只设置左右内外边距,不要设置上下的,因为设置了也不起效果 ; 不过可以转换为块元素和行内块元素就可以设置了

给盒子设置圆角边框 border-radius

border-radius 是设置4个角

border-radius : 具体单位px | 百分号
是 设置 宽度和高度的 多少多少

这个设置了 宽度和高度的 20%
image.png

image.png

4个数值的 就是上右下左

image.png

image.png

2个数值的 就是 斜对角

image.png

image.png

分开写的话

 border-top-left-radius 上左
 border-top-right-radius  上右
 border-bottom-left-radius 下左
 border-bottom-right-radius 下右

image.png

image.png

给盒子添加阴影 box-shadow

不占据空间,不会影响其他盒子排列

box-shadow  : h-shadow(必写 水平阴影 可以负值) 
              v-shadow(必写 垂直阴影 可以负值) 
(6个值)      blur (选 模糊距离)
              spread  (选 阴影的尺寸)
              color  (选 颜色)
              inset (选 将外部颜色(outset) 改为内部阴影)
              (注 : 可以改为inset,但不能写 outset ,这样的话就没有阴影了)

给文字添加阴影 text-shadow

box-shadow  : h-shadow(必写 水平阴影 可以负值) 
(4个值)      v-shadow(必写 垂直阴影 可以负值) 
              blur (选 模糊距离)            
              color  (选 颜色)