盒子模型

437 阅读4分钟

什么是盒子模型?

一个标签就是一个盒子,可以通过6大属性来设置这个盒子。 有margin,border,padding,widht,height,bg。标签分男标签和女标签。 对于男盒子来说,6大属性都有作用。对于女盒子来说,widht,height不起作用, padding 和 margin在水平方向上有作用,在垂直方向上没有作用。



水平方向占据的总宽度:margin-left+border-left+padding-left+width+padding-right+border-right+margin-right

垂直方向上占据的总高度:margin-top+border-top+padding-top+height+padding-bottom+border-bottom+margin-bottom


从6大属性来介绍盒子模型

1.width 盒子内容宽度

使用时一般配合height。

2.height 盒子内容高度 

  • 对于块元素和行内块元素,表示内容区域。
  • 对于行内元素,width和height无效。




3.padding 盒子的内边距(补白)

所表示的区域是边框到内容之间的那块空间。

盒子内容与盒子边框之间的距离,上下左右都有padding

四个方向分别是:

  • padding-top
  • padding-right
  • padding-bottom
  • padding-left


具体的写法:

  • padding:一个值 四边相同
  • padding:两个值 第一个值表示上下的,第二个值表示左右的
  • padding:三个值 第一个值表示上的,第二个值表示左右的,第三个值表示下的
  • padding:四个值 分别是上、右、下、左。

注意:对于块级元素,padding在垂直方向上影响占据空间的高度。

对于行内元素,padding在垂直方向上不影响占据空间的高度,水平方向上还是影响宽度。

4. margin   盒子的外边距 

margin表示边界,外边距。当前元素和另一个元素之间的距离,在border之外的

盒子边框之外的距离,也分上右下左 

margin的设置和padding相似:

  • margin:一个值,表示四个外边距都是一样的
  • margin:两个值,第一个值表示上下的,第二个值表示左右的
  • margin:三个值,第一个值表示上,第二个值表示表示左右的,第三个值表示下
  • margin:四个值,分别对应上、右、下、左


  • 注意:margin可以使用百分比,是相对于父元素的width值。有些标签有默认的margin值,如body、h1~h6、p、ul、ol、dl等。对于行内元素,margin在垂直方向上无效。margin的auto设置。块状元素在垂直方向上有重叠现象。margin可以使用负值。

 margin重叠(塌陷): 

 2个前提:男标签(块级元素),垂直方向 

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

 方法1:给男的变成不男不女的 

 方法2:浮动(浮动元素是不会塌陷的) 

 父子元素之间的重叠:父元素设置margin-top和父中第一个子元素设置的margin-top会重叠 解决重叠: 

 方法1:给父元素设置border-top 不想要边框,使用transparent

 方法2:给父元素设置padding-top 

 方法3:给男的变成不男不女的 ,margin可以设置负值:

5.border 盒子的边框

盒子的边框也是有上边框,右边框,下边框,左边框



实际上,我们描述一个border有三个方面:

1. 边框的粗细:border-width   : 一般使用具体的像素值,或者是使用粗细的英文,thin,                                                         thick,medium

2. 边框的样式:border-style    

  • solid,实线
  • dotted,点画线
  • dashed,虚线
  • none 没有     ......

3. 边框的颜色:border-color   关于颜色的描述:颜色英文名,rgb函数,十六进制

注意:border在页面上也是占据空间的

案例:  利用border实现小三角

div{
    width: 0;
    /* border-top:10px solid red;
    border-right:10px solid transparent;
    border-bottom:10px solid transparent;
    border-left:10px solid transparent; */

    /*简化: 两行代码实现一个小三角 */
    border: 10px solid transparent;
    border-top: 10px solid red;

}


6. background 盒子背景

背景默认情况下会填充内容和padding

background: 

 background-color: 

 background-image: 

    1,默认水平和垂直方向都会平铺 

    2,如果空间不足,图片也会显示,只是显示不完整 

    3,url后面的路径引号可加可不加 

     4,背景图片默认会填充border,padding,content background-repeat:

background-attachment

作用:定义背景图片是随元素滚动还是固定

background-position

作用:用来设置背景图片的位置。

格式:background-position :position-x position-y

background-repeat

作用:用来控制背景图片在元素中水平和垂直方向上是否重复

取值有如下四个:

  • repeat,也是默认的值
  • no-repeat,完全不重复,有且仅有一个
  • repeat-x,水平方向上重复
  • repeat-y,垂直方向上重复(向下为正)