商汇粹外网资源平台

搜索
查看: 1751|回复: 5

css能不能实现左边div固定宽度,右边div自适应撑满剩下的宽度? ...

[复制链接]

该用户从未签到

4

主题

6

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2022-10-6 12:14:05 | 显示全部楼层 |阅读模式
使用了bootstrap的栅格系统,所以父级宽度会不固定。不使用JS的情况下能实现吗?
回复

使用道具 举报

该用户从未签到

9

主题

35

帖子

106

积分

注册会员

Rank: 2

积分
106
发表于 2022-10-6 12:32:25 | 显示全部楼层
利用bfc:
.left{
    width:200px;
    float:left;
}
.right{
    overflow:hidden;
}
右边盒子触发bfc,使其不与浮动盒子区域重叠,因此会重新计算宽度。


看下效果


审查一下元素:
左边div

右边div

----------------------------------------------------------------------------------------------------------------------------
补充一下:BFC翻译过来是块级格式化上下文,和haslayout比较相似,但haslayout是旧版本IE下的一个专有属性,表示元素自己对自身的内容进行组织和计算。BFC相当于一个独立的渲染单元,内外元素不会相互影响。我这里overflow:hidden触发BFC,利用的是BFC布局的一条特性,就是BFC的区域不会与浮动盒子重叠。BFC有很多特性,也有很多触发方式,感兴趣的同学可以google深入了解下
回复

使用道具 举报

该用户从未签到

7

主题

24

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2022-10-6 12:50:45 | 显示全部楼层
flexbox,神器
回复

使用道具 举报

该用户从未签到

7

主题

24

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2022-10-6 13:09:05 | 显示全部楼层
.container { display: flex }.left { flex: none; width: whatever }.right { flex: 1 }
回复

使用道具 举报

该用户从未签到

3

主题

32

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2022-10-6 13:27:25 | 显示全部楼层
.left {  float: left;  width: 200px;}.right {  margin-left: 220px;}
http://jsbin.com/wuzotabeya
之前随手一答,好多赞 #^_^# 补充下,免得误人子弟。
上面这种方式还要考虑到清除浮动。
不考虑浏览器兼容性的话也可以用 flexbox
http://jsbin.com/tefeyutoba
回复

使用道具 举报

该用户从未签到

9

主题

47

帖子

152

积分

注册会员

Rank: 2

积分
152
发表于 2022-10-6 13:45:45 | 显示全部楼层
看了一圈,又结合自己的经验,总结了一下。
题主可以都了解下,实战中,贵在选择
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(1)使用float
@柳宇航


<div class="use-float">    <div></div>    <div></div></div>
.use-float>div:first-child{    width:100px;    float:left;}.use-float>div:last-child{    overflow:hidden;}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(2)使用table
<table class="use-table">    <tr>        <td></td>        <td></td>    </tr>    </table>
.use-table{    border-collapse:collapse;    width:100%;}.use-table>tbody>tr>td:first-child{    width:100px;}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(3)用div模拟table
<div class="use-mock-table">    <div></div>    <div></div></div>
.use-mock-table{    display:table;    width:100%;}.use-mock-table>div{    display:table-cell;}.use-mock-table>div:first-child{    width:100px;}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(4)使用flex
@何凯


<div class="use-flex">    <div></div>    <div></div></div>
.use-flex{    display:flex;}.use-flex>div:first-child{    flex:none;    width:100px;}.use-flex>div:last-child{    flex:1;}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
效果图:(在以上样式基础上,我又加了高度和边框,才能看到下面的样子。。。)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表