三栏网页宽度自适应布局方法

首先解释一下什么是“三栏布局”:顾名思义,三栏布局就是在网页上以平铺方式展现的左中右三列布局,其特点在于,左右两列可固定在网页左右两侧,中间一列永远居中,且当网页宽度大于左右两列宽度之和时,中间一列可随网页整体宽度的变化而变化。无论在自适应网页或响应式网页中,三栏布局都是最为常见和基础的布局方式之一。
目前为止,三栏布局的常用写法有三个:绝对定位法,外距负值法以及自身浮动法。


一、绝对定位法:左右两栏采用绝对定位,分别固定于页面的左右两侧,中间的主体栏用左右margin值撑开距离。于是实现了三栏自适应布局。

首先需要三个div,将左右两边的div的position设置为absolute,左右设置为相等固定宽度,在这里设置为200px,并且左边div的top值为0,left值为0,同理右边top值为0,right值为0。然后设置中间div的样式,将中间div的margin-left和margin-right设置为左右两边的固定宽200px。以下是简单的布局:

<body>
    <div id="main"></div>
    <div id="left"></div>
    <div id="right"></div>
</body>

下面就是关键的css代码:

<style type="text/css">
    #main {margin:0 200px;background:red;}
    #left{position:absolute;top:0;left:0;width:200px;background:blue;height:100%;} <br>    #right{position:absolute;top:0;right:0;width:200px;background:green;height:100%;}<br> </style>

这种方式三个div的顺序可以任意改变。

此方法的优点在于:理解容易,上手简单,受内部元素影响而破坏布局的概率低,就是比较经得起折腾。
缺点在于:如果中间栏含有最小宽度限制,或是含有宽度的内部元素,当浏览器宽度小到一定程度,会发生层重叠的情况。

二、自身浮动法:左栏左浮动,右栏右浮动,中间栏放最后。

以下是布局代码:

<body>
    <div id="left"></div>
    <div id="right"></div>
    <div id="main"></div>
</body>

下面是css样式代码:

<style type="text/css">
    #main {margin:0 200px;background:red;}
    #left{float:left;width:200px;background:blue;height:100%;}
    #right{float:right;width:200px;background:green;height:100%;}
</style>

这种方式需要注意三个div的顺序,左右两栏的顺序不分先后,但是中间一栏必须放在最后。

此方法的优点是:代码足够简洁与高效
缺点是:中间主体存在克星,clear:both属性。如果要使用此方法,需避免明显的clear样式。  

三、margin负值法:左右两栏均左浮动,左右两栏采用负的margin值。中间栏被宽度为100%的浮动元素包起来。

下面是布局代码:

<body>
   <div id="main">
       <div class="content"></div>
   </div>
   <div id="left"></div>
   <div id="right"></div>
</body>  

下面是css样式代码:

<style type="text/css">
   #main {float:left;width:100%;}
   .content {margin:0 200px;height:100%;background:red;}
   #left{float:left;width:200px;margin-left:-100%;background:blue;}
   #right{float:left;width:200px;margin-left:-200px;background:green;}
</style>

左右两栏div的顺序不分先后,但是主体部分div要放前面。

此方法的优点在于:三栏相互关联,可谓真正意义上的自适应,有一定的抗性——布局不易受内部影响。
缺点在于:相对比较难理解些,上手不容易,代码相对复杂。出现百分比宽度,过多的负值定位,如果出现布局的bug,排查不易。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值