盒子模型

222 阅读6分钟

标签是矩形的 那这个矩形的标签就是一个盒子,一张网页,就是由一个个盒子堆起来的。

属性

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

在标准盒模型中(以块级元素为例):
水平方向上占据的总宽度: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

width和height对于块元素和行内块元素,表示内容区域;对于行内元素,width和height无效。width的默认值是auto,auto对块元素是贪婪性(即无限大),对行内元素是懒惰性(即无限小,只有内容大小)。
实际上,对于行内元素而言,其宽度由其内容决定,其高度则由font-size决定。width和height可以设置百分比,相比父元素的width和height而言。
border的特性和设置:border有三个方面。

  • 边框大小(粗细) border-width 用具体的像素 5px;还有表示粗细的英文,不建议使用。

  • 边框的样式 border-style
    solid 实线 dotted 点画线 dashed 虚线
    double:定义边框为双边框线 groove:定义边框为3D凹槽
    ridge:定义为边框3D凸槽 inset:定义边框为3D凹边
    outset 定义边框为3D凸边 hidden:隐蔽边框 IE不支持 。

  • 边框的颜色 border-color 颜色英文名,十六进制,rgb函数 而border可以简写的,是以上三个的简写。三个属性没有固定的顺序,属性之间使用空格隔开。他还有四个方向的子属性,如border-top-style。

在border中的三个属性中,其实它们都有默认值,

  • border-width,默认是medium,一般是3px
  • boder-color,默认是字体的颜色
  • border-style,默认是none

用border实现设置三角形
“div{ border:10px solid transparent;
border-top:10px soild black; }”

padding的特性及设置 padding,表示内边距,又或者叫补白。所表示的区域是边框到内容的那块空间。

  • padding有四个方向上的子属性:
  • padding-top、padding-right、padding-bottom、padding-left
  • 具体写法有几种:
  • 单独的设置某一个子属性;
  • padding:一个值,四边相同;
  • 两个值,第一个表示上下的,第二个表示左右的;
  • 三个值,第一个表示上的,第二个表示左右的,第三个表示下的;
  • 四个值,分别是上、右、下、左。
    注意padding可以使用百分比,是相对于父元素的width值,一般在响应式web中使用。 有些标签有默认的padding值,如ul、ol等。 对于行内元素,padding在垂直方向上不影响行高。

在开发页面的时候,为了保证所有的这些标签都有统一的一个padidng值,采取一刀切 *{padding:0;}

  • 对于padding而言,如果是行内元素,它在垂直方向上不影响行高。

margin的特性及设置 margin表示边界,外边距,当前元素和另一个元素之间的距离,是在border之外的。

  • margin有四个方向上的子属性:
  • margin-top、margin-right、margin-bottom、margin-left
  • 具体写法有几种:
  • 单独的设置某一个子属性;
  • margin:一个值,四边相同;
  • 两个值,第一个表示上下的,第二个表示左右的;
  • 三个值,第一个表示上的,第二个表示左右的,第三个表示下的;
  • 四个值,分别是上、右、下、左。
    注意
  • margin可以使用百分比,是相对于父元素的width值。
  • 有些标签有默认的margin值,如body、h1~h6、p、ul、ol、dl等
  • 对于行内元素,margin在垂直方向上无效。
  • margin的auto设置;实现元素的水平居中 margin:20px auto;
  • 块状元素在垂直方向上有重叠现象。
  • margin可以使用负值。
  • 清除页面默认的margin用 {margin:0;}

塌陷(重叠现象)分两种

兄弟关系的垂直重叠和父子关系的重叠

  • 兄弟元素之间的重叠:上盒子的margin-bottom和下盒子的margin-top会重叠 ---->取大优先 解决方法:把男标签(块级元素)变成非男标签 设置浮动 只设置一个盒子的margin。
  • 父子(第一个子或最后一个子)元素之间的重叠:父元素的margin-top 和子元素的margin-top --->取大优先 父元素的margin-bottom 与 子元素的 margin-bottom ---->取大优先 解决方法:把男标签变成非男标签, 设置 border padding

background深入(重难点)5个属性

  • background-color 颜色值 定义背景颜色
  • background-image url/none 定义元素的背景图片
  • background-repeat repeat/no-repeat/repeat-x/repeat-y 定义背景图片是否以及如何铺排
  • background-position 关键字/长度值/百分比 定义背景图片的位置
  • background-attachment scroll/fixed 定义背景图片是否随元素滚动还是固定

background-position
作用:用来设置背景图片的位置。
格式:background-position:position-x position-y
具体在设置的时候,有如下三种设置方式:

  • 使用关键字:top、left、right、bottom、
  • 使用百分比:0%、50%、100%
  • 使用像素值:25px、100px
    除了像素值,还可以使用关键字
  • 水平方向:left、center、right
  • 垂直方向:top、center、bottom
    注意:当我们使用关键字的时候,比如使用top,它的意思是元素的顶端和背景图片的顶端对齐。比如使用center,其含义是元素的中心点和背景图片的中心点是对齐的。

关于百分比的使用

0%,水平方向相当于 left,垂直方向相当于top
50%,水平方向相当于center,垂直方向相当于center 100%,水平方向相当于right,垂直方向相当于bottom 友情提示:background-position理解起来确实有点困难,一定要自己写对应代码,分析定位的过程,并加以理解。

background-attachment

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

有两个值:

scroll,表示背景图片会随着滚动条的滚动而滚动
fixed,固定不变,
注意细节:

background中的背景颜色,默认值是transparent,透明的。
background所覆盖的区域,包括padding和内容区域。(border先放一下,应用比较少)
在设置背景的时候,很容易覆盖前面的设置。
background的顺序有要求,按照顺序来写。