没有弹性盒,如何玩转移动端?

一说到移动端布局,大部分同学会想到用rem,不错rem确实可以解决各种问题,哪怕宽度你都写固定值都没有问题,但是宽度的适配使用大量的数值,是不是算起来有点头疼呢?还有一部分同学会大面积使用弹性盒,宽度的适配用弹性盒真的是太香了,可是弹性盒它并不能兼容所有的设备,那没有弹性盒是不是就没有办法了呢?其实并不是的,我这里提供几个常用布局方式,就算是没有弹性盒,也可以轻松玩转移动端!

1、上下固定,中间弹性

在这里插入图片描述

上下固定中间弹性的布局在移动端随处可见,因为手机端大多数都会存在上下两个导航栏。用弹性盒的方法我在此就不多说了,我们看看使用定位的方式如何进行布局?我们可以把头部和脚部的板块都固定定位在内容区的内边距上面,因为固定定位不占位,所以内容区占满了整个屏幕。这里需要注意的是,头部和脚部一定记得给宽度,因为固定定位的盒子宽度是自适应内容状态,如果没有内容他就是零了。

<style>  
*{padding: 0;margin: 0;}
html,body{height: 100%;}
header{height: 44px;background: pink;position: fixed;top: 0;width: 100%;}
main{height: 100%;box-sizing: border-box;padding-top: 44px;padding-bottom: 44px;background: #ffc;overflow:auto;}
footer{height: 44px;background: pink;position: fixed;bottom: 0;width: 100%;}
</style>

<body>
   <header></header>
   <main></main>
   <footer></footer>
</body>

2、左固定,右弹性

左固定右弹性在移动端展示内容部分也会经常遇到,如下图均是。我们可以使用浮动或者定位来实现:

浮动:

左边固定只需要把固定宽度写好就好,右边弹性宽度一定不要写,然后加上溢出隐藏,利用BFC的原理可以实现弹性效果,而且不被左边的盒子覆盖,简直不要太完美。

<style> 
.left{width: 200px;height: 200px;background: #f6c;float: left;}
 .right{overflow: hidden;height: 200px;background: yellow;}
</style>
<div class="left"></div>
<div class="right"></div>
定位:

利用定位的方式也是不错的可以把左边定位到右边的内边距上面,

右边的盒子可以不写宽度,添加左内边距,

如果右边的盒子书写宽度百分百,那你一定要记得转换怪异盒模型。

<style>
.left{width: 200px;height: 200px;background: #f6c;position: absolute;}
.right{height: 200px;background: yellow;padding-left: 200px;}
</style>
<div class="left"></div>
<div class="right"></div>

3、左右固定,中间弹性

左右固定中间弹性的布局方式,一般会在头部使用的比较多一点。

浮动:

左右固定,如果选用浮动的方法,一定要注意html结构的书写顺序,需要先写左右,后写中间,如果把中间写在了右的前面,那你右面的盒子就浮不上去了,因为中间的盒子还在标准流里,他是独占一行的,所以一定要记得把右放在前面。

<style>
.left{width: 200px;height: 200px;background: #f6c;float: left;}
.right{width:200px;height: 200px;background: #f60;float: right;}
.center{height: 200px; background: yellow; overflow: hidden;}
</style>

  <div class="left"></div>
  <div class="right"></div> <!--放在center盒子的前面-->
  <div class="center"></div> <!--center放后面-->
定位:

用定位的方法实现左右固定,中间弹性就比较简单了,思路是一样的,把他俩分别定位到中间盒子的左右内边距上面就可以了,记得添加坐标哦,不然他们会脱标留原位的!

<style>
.left{width: 200px;height: 200px;background: #f6c;position: absolute; top: 0;left: 0;}
.right{width:200px;height: 200px;background: #f60;position: absolute;top: 0;right: 0;}
.center{height: 200px; background: yellow;  padding-left: 200px;padding-right: 200px;}
</style>

  <div class="left"></div>
  <div class="right"></div>
  <div class="center"></div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值