续前面的CSS布局篇,这篇针对移动端布局的特点整理了几种弹性布局的案例。
百分比布局
相较于写死像素绝对值的布局,百分比布局是最简单的实现弹性布局的方式,只需将原来宽度的绝对大小都替换成百分比即可。
1 | .layout-container { |
注:部分手机浏览器无法计算到很精确的percentage,在四舍五入时会出现问题,比如总宽度超过了100%就会将最后一个元素挤到下一行去。因此将上述percentage(1/3)
改为33.3%
即可。
flex 布局
关于flex布局的教程请看:一个完整的Flexbox指南
1 | .flexbox(){ |
弹性图片
弹性图片的需求是当屏幕尺寸变化时,图片保持等比缩放,且不能出现文档高度的抖动。
1 | <div class="item"> |
1 | .item{ |
原理
padding 的百分比值都是参照父元素的 width 计算出的
absolute 元素的 width、height 百分比值也是参照最近 relative 父元素的
通过在 img 父元素内做个伪类,用
padding-top
将父元素撑起来,padding-top
的百分比等于图片的高宽比。这样当图片未载入时,也预留出图片的占位,不会产生文档高度的跳动。
两列同步拉伸
弹性图片的需求再进一步,需要实现等比缩放的两列布局,可以是图片,也可以是图文混排。(可参考双11商品活动页的移动端展现)
1 | <div class="box banner"> |
1 | @cellPadding: 10px; |
移动端布局特点:
- 绝对定位时不要写死px,用百分比,或者同时设置top left bottom right
- 要考虑到屏幕resize和旋转的情况