提起布局,盒模型是最重要的概念。
盒模型:包括 宽、高、外边距、内边距、边框,
注意:当两个垂直盒子算margin时,只会计算比较大的那个元素。盒子的大小,最好是打开开发者模式去看看真实的是多少,有时因为一些原因自己写的可能是样式并没有用上。
css3 box-sizing:border-box; 给这个块级元素设置这个,不会计算margin值,这样只要量出盒子大小(指边框以内的)只要写padding ,border ,content 内容大小会自己计算。
1. 3种定位机制:普通流、浮动、绝对定位
一般都是普通流
但是有时,我们需要在一行显示块级元素,用浮动或者定位都行,但是现在提倡响应式布局,浮动也可以解决,但是文件脱离文档流,需要清除浮动。一个好的方式是 display:inline-block;一行显示块级元素,但是会产生间隔,解决方案是给父级元素 font-size:0; 自己元素再设置font-size:大小;即可。
浮动:float:left right ;
定位:relative absolute fixed
2.整体页面居中
随着现在设备的屏幕越来越大,最好是设计好整体页面的宽高和,然后用
margin:0 auto居中。
3.两列布局
3.1 浮动
左浮动 ,又浮动解决
3.2 定位
相对于父级元素 绝对定位解决
4.三列布局
现在是响应式布局,不推荐使用浮动,因为会出现很多问题,要想完美解决,推荐一种双飞翼的布局。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <style> .wrapper{ position: relative; } .middle{ margin: 0 100px; text-align: center; } .left{ width: 100px; position: absolute; left: 0; top: 0; } .right{ width: 100px; position: absolute; right: 0; top: 0; } </style> </head> <body> <div class="wrapper"> <div class="middle"> <span>中间</span> </div> <div class="left">左盒子</div> <div class="right">又盒子</div> </div> </body> </html>
4.流式布局
百分比布局,但是这种算上下文的百分比实在麻烦,不停的计算器在计算。
推荐使用min-width ,max-width 设置,元素的宽高不要写死,用margin 和padding隔离开,让元素自动填充区域。
使用rem为单位的设置,sublime有个插件可以自动将px转换为rem 基于浏览器进行计算。
移动端因为物理像素比不同,推荐使用淘宝镜像自动适配屏幕布局 flexible.js
5.弹性布局
移动端的兼容较好