CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距(margin)、边框(border)、内边距(padding)、实际内容(content)四个属性。css
盒模型容许咱们在其它元素和周围元素边框之间的空间放置元素。布局
标准盒模型:css属性里的width和height规定的就是内容的宽高blog
怪异盒模型:css属性里的width和height规定的宽高是包含内外边距和边框的文档
即box-sizing属性能够指定盒子模型种类,content-box指定盒子模型为W3C(标准盒模型),border-box为IE盒子模型(怪异盒模型)。get
解决两种模式下样式的兼容性问题it
建议不要给元素添加指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素io
简单结论:auto表现为content+padding+border+margin值等于parent的宽度,不会溢出父亲,若设置为宽度是100%则当有内边距和外边距的时候,子元素的会溢出父亲class
(参考博文:https://www.jianshu.com/p/549aaa5fabaa)兼容性
双飞翼布局:两侧宽度固定,中间宽度自适应的三栏布局。原理
优势:
两侧宽度固定,中间宽度自适应
中间部分在DOM结构上优先,以便先行渲染
容许三列中的任意一列成为最高列
只须要使用一个额外的div标签
原理:主要是利用了margin为负数时的一些效果
实现思路:使用一个div包裹三块内容,使三块内容浮动(缘由:使三个Div在文档流中在同一行),center块使用padding属性左右流出空间给left,right。left,right块元素分别相对定位和magin为负数的影响移动至预留的位置里。
1.对自身的影响:
margin-top为负值不会增长高度,只会产生向上位移
margin-bottom为负值不会产生位移,会减小自身的供css读取的高度。
2.对文档流的影响
元素若是用了margin-left:-20px;毋庸置疑的自身会向左偏移20px和定位(position:relative)有点不同的是,在其后面的元素会补位,也就是后面的行内元素会紧贴在此元素的以后。。