两列自适应布局方案

241 阅读1分钟
  1. 左列固定,右列自适应

基本的结构:

<div class="box">
  	<div class="left">left</div>
  	<div class="right">right</div>
</div>

<style>
.left{
    width: 300px;
    height: 300px;
    background: orange;
}
.right{
    width: 100%;
    height: 400px;
    background: green;
}
</style>

效果图如下:

实现原理:左列浮动,两个就重叠到一起了,这时再设置右列的margin-left值为左列的宽度就可以了。注意,不要忘了清除浮动。

代码如下:

.box{
    overflow: hidden;
}
.left{
    width: 300px;
    height: 300px;
    background: orange;
    float: left;
}
.right{
    width: 100%;
    height: 400px;
    background: green;
    margin-left: 300px;
}

效果图如下:

  1. 左列自适应,右列固定

基本的结构:

<div class="box">
  	<div class="left">left</div>
  	<div class="right">right</div>
</div>

<style>
.left{
    width: 100%;
    height: 400px;
    background: green;
}
.right{
    width: 300px;
    height: 300px;
    background: red;
}
</style>

效果图如下:

实现原理:

(1)左列和右列都设置左浮动,效果依然是这样。

(2)然后右列设置margin-left为负的右列的宽度,右列和左列就会到一行。效果如下:

(3)这时设置父元素的padding-right 为右列的宽度。就会空出右列的宽度。

(4)这时让右列往右移动本身的宽度就可以了,用相对定位来实现。

代码实现如下:

.box{
	padding-right: 300px;
	margin: 20px;
	overflow: hidden;
	}
.left{
    width: 100%;
    height: 400px;
    background: green;
    float: left;
}
.right{
    width: 300px;
    height: 300px;
    background: red;
    float: left;
    margin-left: -300px ;
    position: relative;
    right: -300px;
}

效果如下: