实现两个div,左边固定宽,右边自适应

117 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

前言:

成功没有捷径但成长有路径

css必备场景。专注积累,每天记录一个知识点,老概念新理解,重点记录一下

正文

效果

前端场景系列之一,这也是一种前端常见布局结构,页面使用度极高,实现两个div,固定一个宽/高,另一个宽/高自适应,不同场景下使用方法也不同,择优选择。

1,宽度固定

2,高度固定

基础

基础属性这里不做详细解释了

学习css布局: zh.learnlayout.com/no-layout.h…

实现

方法1:float

float+BFC 实现

.left {
    width: 200px;
    height: 100%;
    border: 1px solid green;
    float: left;
}
.right {
    height: 100%;
    border: 1px solid red;
    overflow: hidden;
}

方法2:absolute定位

.left {
    width: 200px;
    height: 100%;
    border: 1px solid green;
    position: absolute;
}
.right {
    height: 100%;
    border: 1px solid red;
    margin-left: 200px;
}

方法3 calc(100%-固定内容的宽度或者高度)

动态计算宽高,calc() 函数允许我们进行数学操作,加减乘除

.left {
    width: 200px;
    height: 100%;
    border: 1px solid green;
    float: left;
}
.right {
    height: 100%;
    border: 1px solid red;
    float: left;
    width: calc(100% - 200px);
}

方法4 flex

flex:1 剩余空间等比例分配给子元素

.box {
    display: flex;
}
.left {
    width: 200px;
    height: 100%;
    border: 1px solid green;
}
.right {
    height: 100%;
    border: 1px solid red;
    flex: 1;
}

但是使用flex会有一个注意点:flex布局中设置子元素宽度失效

参考这篇文章:juejin.cn/post/717665…

方法5:使用table和table-cell实现

display: table,作为块元素级的表格,相当于html标签<table>

表格的属性他都可以用

.content {
     border: 1px solid #000;
     width: 100%;
     height: 800px;
     display: table;
 }
 .left {
     width: 200px;
     height: 100%;
     border: 1px solid green;
     display: table-cell;
 }
 .right {
     height: 100%;
     border: 1px solid red;
     display: table-cell;
 }

结语

项目里最常用,比较推荐的方法是3,4,简单高效最稳妥。 刚开始的文章有点粗糙,我相信以后会越来越好的,从基础文章开始,把脑子里的想法都输出出来。