CSS盒模型本质上是一个盒子,封装周围的 HTML 元素,包括 外边距(marign),边框(border),填充(padding),内容物(content)css
盒子模型的类型:W3C 标准和模型和 IE 盒模型(怪异盒模型)css3
css3新增的 box-sizing 属性的值 content-box 就是标准盒模型,border-box 就是 IE 盒模型
盒模型 -- 基本框浏览器
CSS 假定每一个元素都会生成一个或多个矩形框,各元素框中心又一个内容区,这个内容区周围有可选的内边距、边框和外边距。
盒模型 -- 包含块布局
每一个元素都相对于其包含块摆放,包含块就是一个元素的布局上下文。
盒模型 -- 正常流post
指的是西方语言文本从左向右、从上向下显示,这也是传统 HTML 文档的文本布局。大多数元素都是在正常流中,要让一个元素不在正常流中,惟一的办法就是使之成为浮动或定位元素。
块级元素spa
控制盒模型的水平方向的有 7 个值:margin-left、border-left、padding-left、width、padding-right、border-right、margin-right(加在一块儿必须等于包含快的宽度)。其中 margin 和 width 能够设置为 auto,其余的要么是肯定的值,要么就是默认的 0。margin 值能够设置为负,padding 不能够。水平外边距不会合并。一个元素的默认高度是由其内容肯定,能够对任何块级元素设置显示高度。code
一样,控制盒模型的竖直方向的有 7 个值:margin-top、border-top、padding-top、height、padding-top、border-top、margin-top(加在一块儿必须等于包含快的高度)。其中 margin 和 height 能够设为 auto,可是上下外边距设置为 auto 没什么用,由于会被重置为 0。若是块级正常流的高度设为 auto,并且只有块级子元素,其默认高度是从最高块级子元素的外边框边界到最低块级子元素外边框边界之间的距离。对象
垂直方向上另外一个重要的方面是:相邻的元素外边距会合并。ip
若是相邻两个元素垂直外边距都设置为负值,浏览器会取绝对值大的做为外边距。若是一正一负,会取正外边距减去负外边距的绝对值的差做为外边距。文档
block、inline、inline-block 对比
文档流:在 css 中有一个 z-index 属性,默认状况下,全部页面元素均位于 z-index: 0 这一层,而这一层顺序排列的元素就叫文档流。float 和 position 都是经过改变文档流来实现定位。CSS 有 三种定位机制:文档流、浮动和绝对定位。除非专门指定,不然全部元素都在文档流中定位。CSS 定位的基本思想很简单,它容许你使得元素相对于其正常应该出现的位置,或者相对于父元素、另外一个元素甚至浏览器窗口自己的位置来进行定位。
float
float 属性定位的元素位于 z-index: 0 层,它是经过 float: left 和 float: right 来控制元素在 0层左浮仍是右浮,float会改变整成的文档流排列,影响到周围的元素,可是不会脱离文档流。float 元素在文档流中一个挨着一个排列,但只是float 元素之间一个挨着一个排列,对于非 float 元素,float 元素会越过它们,即 float: left 会把非 float的元素挤到全部 float 的元素右边,float: right 则挤到左边。
position
postion 属性有四个值:static(默认值)、relative、absolute、fixed