美文网首页
两栏布局

两栏布局

作者: 时间的溺水者 | 来源:发表于2022-03-30 22:28 被阅读0次

html部分

<!-- HTML结构 -->
<div class="wrap">
    <div class="left">
        左侧固定内容
    </div>
    <div class="right">
        右侧内容自适应
    </div>
</div>

1、左浮动,右溢出隐藏,外盒子清除浮动

* {
    margin: 0;
    padding: 0;
}

.wrap {
    border: 1px solid red;
}
/* 脱离文档流 */
.left {
    float: left;
    width: 200px;
    height: 200px;
    background: purple;
}

.right {
    overflow: hidden;
     background-color: yellow;
}

解释效果实现原理:left左浮动,常规流right 就会直接显示上去,默认占满宽度。而right 添加overflow(不是默认值visible就行)会触发bfc(一个独立渲染区域),就会避开浮动元素,只撑开剩余内容,从而实现右边自适应(内部实现应该是在main左边添加了外边距)。

至于给父盒子清除浮动,是因为左边浮动,高度不计算在内了,所以清除浮动,确保把父元素盒子撑开。

很多很多网站都是这样布局,这种方式也能实现三栏布局。可自己想一下,很简单。然后看下面提示:

左浮动,右浮动,中间overflow,父盒子清除浮动。

其实实现方式大同小异,不过要注意一点,不管两栏还是三栏布局,浮动元素一定要放在自适应盒子的上面。

2、使用弹性布局—flex

/* 清除浏览器默认边距 */
* {
    margin: 0;
    padding: 0;
}
.wrap {
    display: flex;
}
.left {
    height: 200px;
    background: purple;
    flex:0 0 200px
}
.right {
    background: skyblue;
    height: 200px;
    flex: 1;
}

3、使用绝对定位实现—absolute

/* 清除浏览器默认边距 */
* {
    margin: 0;
    padding: 0;
}

.wrap {
    overflow: hidden;
    position: relative;
}
/* 脱离文档流 */
.left {
    position: absolute;
    left: 0;
    top: 0;
    width: 200px;
    height: 200px;
    background: purple;
}

.right {
    margin-left: 200px;
    background: skyblue;
    height: 200px;
}

4、使用calc()函数

/* 清除浏览器默认边距 */
* {
    margin: 0;
    padding: 0;
}
/* 双float */
.wrap {
    overflow: hidden;
}

.left {
    float: left;
    width: 200px;
    height: 200px;
    background: purple;
}

.right {
    float: left;
    background: skyblue;
    height: 200px;
    width: calc(100% - 200px);
}

相关文章

网友评论

      本文标题:两栏布局

      本文链接:https://www.haomeiwen.com/subject/kvfojrtx.html