记录一些自适应布局情形的写法。
左边栏固定,右边栏自适应
如下DOM结构:
1 | <div class="container"> |
预期效果:
table布局
1 | * { |
BFC
1 | * { |
flex布局
1 | * { |
绝对定位+calc
1 | * { |
inline-block
1 | * { |
左右边栏固定,中间自适应
预期效果:
float:right + float: left + 层级特性
其实个人看来这种实现并不是什么自适应的操作,只是利用层级的特性,将主体内容压在左右两块浮动元素下罢了…
如下DOM结构:
1 | <div class="container"> |
样式:
1 | * { |
float:left + calc
1 | <div class="container"> |
1 | * { |
flex布局
1 | * { |
table布局
1 | * { |
绝对定位
1 | * { |
引申
left 与 margin-left
从效果来说,两者都能根据左侧定位。但是从副作用角度上来说,margin-left
会根据左侧的定位元素生成一个左margin,而left
则不会;从生效条件来说,left
属性生效于设置了position
的元素内;从参照定位元素来说,left
取决于父级定位情况。
圣杯与双飞翼
参考文章。