css实现两栏布局,左侧固定宽,右侧自适应的七种方法

一个面试会问的问题,如何实现两个盒子,左侧固定宽度,右侧自适应。
下面是实现的其中方法:

1、利用 calc 计算宽度的方法

css代码如下:

.box{overflow: hidden;height: 100px;margin: 10px 0;}
.box>div{height: 100%;}
#box1>div{float: left;}
.left1{width: 100px;background: yellow;}
.right1{background: #09c;width:calc(100% - 100px);}

dom结构如下:

左侧定宽
右侧自适应

2、利用 float 配合 margin 实现

css代码如下:

.box{overflow: hidden;height: 100px;margin: 10px 0;}
.box>div{height: 100%;}
.left2{float: left;background: yellow;width: 100px;}
.right2{background: #09c;margin-left: 100px;}

dom结构如下:

左侧定宽
右侧自适应

3、利用 float 配合 overflow 实现

css代码如下:

.box{overflow: hidden;height: 100px;margin: 10px 0;}
.box>div{height: 100%;}
.left3{float: left;background: yellow;width: 100px;}
.right3{background: #09c;overflow: hidden;}

dom结构如下:

左侧定宽
右侧自适应
// 注意: 如果是左侧自适应,右侧定宽,下面的写法中, 右侧定宽的内容会被顶下去,所以要交换一下书写的位置:把定宽的元素放在上面
左侧自适应
右侧定宽

4、利用 position:absolute 配合 margin 实现

css代码如下:

.box{overflow: hidden;height: 100px;margin: 10px 0;}
.box>div{height: 100%;}
#box4{position: relative;}
.left4{position: absolute;left: 0;top:0;width: 100px;background: yellow;}
.right4{margin-left:100px;background: #09c;}

dom结构如下:

左侧定宽
右侧自适应

5、利用 position:absolute 实现

css代码如下:

.box{overflow: hidden;height: 100px;margin: 10px 0;}
.box>div{height: 100%;}
#box5{position: relative;}
.left5{position: absolute;left: 0;top:0;width: 100px;background: yellow;}
.right5{position: absolute;left: 100px;top:0;right: 0;
 width: 100%;background: #09c;}

dom结构如下:

左侧定宽
右侧自适应

6、利用 display: flex 实现

css代码如下:

.box{overflow: hidden;height: 100px;margin: 10px 0;}
.box>div{height: 100%;}
#box6{display: flex;display: -webkit-flex;}
.left6{flex:0 1 100px;background: yellow;}
.right6{flex:1;background: #09c;}

dom结构如下:

左侧定宽
右侧自适应

7、利用 display: table 实现

css代码如下:

.box{overflow: hidden;height: 100px;margin: 10px 0;}
.box>div{height: 100%;}
#box7{display: table;width: 100%;}
#box7>div{display: table-cell;}
.left7{width: 100px;background: yellow;}
.right7{background: #09c;}

dom结构如下:

左侧定宽
右侧自适应

实现效果如下图:

css实现两栏布局,左侧固定宽,右侧自适应的七种方法_第1张图片

你可能感兴趣的:(CSS(3))