两栏 右边自适应布局
左浮动 + 右新建bfc
右左排列,右浮动 + 左(浮动 + margin-x:-100%)
|
|
左浮动 + 右(浮动 + width: cal(100vw-左边box宽度)
- 运算符前后要有空格
- 1vw = viewport 宽度的 1%, 100vw = viewport width
右flex-grow
- 对于剩余空间,按数值评分。若只有一个设置了正值,那么它会占据剩下所有空间
三栏 中间自适应布局
flex布局,自适应块设置flex-grow值
左右中排序,左右浮动,中间生成新bfc/定位/margin
|
|
左中右排序,父table,左中右table-cell
左中右排序,grid布局
|
|
圣杯布局
|
|
|
|
多栏等高布局
table布局
父元素display:table;子元素display:table-cell
负margin+正padding
|
|
inline-block(仅视觉上,不考虑背景色和border)
linebox的默认高度为被所包含的最大高度的inlinebox123456.demo{ display:inline-block; width:100px; word-break: break-all; /*换行*/ vertical-align: top; /*改变基线,使文字在块的顶部排列*/}
垂直水平居中
margin负间距 + absolute
|
|
margin auto + absolute
兼容性:IE7及之前版本不支持12345678div{ position:absolute; left:0; top: 0; bottom: 0; right: 0; margin: auto;}
Transform
兼容性:IE8及之前不支持123456div{ position: absolute; left:50%; top:50%; transform: translate(-50%,-50%); /*自己的50% */}
flex
兼容性:IE9及之前不支持12345.container{ display:flex; justify-content:center; align-items:center;}
table
兼容性:IE7及之前版本不支持
方案一:子元素会换行
12345678.container{display: table-cell;vertical-align: middle;text-align: center;}.child{display:inline-block; /*若不够空间,下个box会自动换行*/}方案二 :子元素均在同一行并平分空间
12345678.container{display: table;}.child {display: table-cell; /*均会在同一行,并自动平分空间*/vertical-align: middle;text-align: center;}
absolute + calc
兼容性:IE8及之前不支持
局限性:子元素必须固定宽高,而且12345678910.parent{ position:relative;}.child{ position:absolute; top: calc(50% - 30px); left: calc(50% - 50px); width: 100px; /*必须固定宽高*/ height: 60px;}