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

一、绝对定位法

html片段如下:

<div id="left">left</div>  
<div id="main">main</div>  
<div id="right">right</div>  
css片段如下:
html,body{padding:0;margin:0;} 
#left,#right{position:absolute;top:0;width:190px;height:200px;}
#left{left:0;background-color: #0000FF;}  
#main{margin:0 200px;background-color: #ccc;height:200px;}  
#right{right:0;background-color: #FF0000;}

思路:左右两栏采用绝对定位,分别固定于页面的左右两侧,中间的主体栏用左右margin值撑开距离。

二、双飞翼布局

HTML片段如下:

   <div id="wrap">
     <div id="main" class='col'>
	<div class="mainIn">main</div>
     </div>
    <div id="left" class='col'>left</div>
    <div id="right" class='col'>right</div>
  </div>
注意:主体main放置在最前面可以优先加载。mainln是为了处理main中内容的遮盖问题,只需设置它的左右外边距即可解决。

CSS片段如下:

	.col {float: left;height: 400px;}
	#main {width: 100%;background-color: #ccc;}
	.mainIn{margin: 0 150px 0 190px;}
	#left {width: 190px;margin-left: -100%;background-color: #0000FF;}
	#right {width: 150px;margin-left: -150px;background-color: #FF0000;}

三、圣杯布局

HTML片段如下:

  <div id="wrap">
    <div id="main" class='col'>main</div>
    <div id="left" class='col'>left</div>
    <div id="right" class='col'>right</div>
  </div>

CSS片段如下:

	#wrap{padding: 0 150px 0 190px;}
	.col{position: relative;float: left;}
	#main{width: 100%;height: 400px;background-color: #ccc;}
	#left{width: 190px;height: 400px;margin-left: -100%;left: -190px;background-color: #0000FF;}
	#right{width: 150px;height: 400px;margin-left: -150px;right: -150px;background-color: #FF0000;}
两种布局的相同:三个col都设置float: left,为了把left和right定位到左右部分,采用负边距,left部分margin-left: -100%,right部分margin-left: -150px。 
两种布局的区别:相比圣杯布局,双飞翼不必设置左右栏的position: relative,也不必设置左右left、right值,只需多添加一个子元素包含,相应的padding换成margin。

圣杯布局和双飞翼布局的中间栏要放在文档流前面以优先渲染。


四、flex布局实现上面的效果

 <div id="wrap">
    <div id="left" class='col'>left</div>
    <div id="main" class='col'>main</div>
    <div id="right" class='col'>right</div>
 </div> 
 #wrap{display:flex;}
.col{height:400px;}
#left{width: 190px;background-color: #0000FF;}
#main{flex:1;background-color: #ccc;}
#right{width: 150px;background-color: #FF0000;}


四种布局得到的效果




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值