css实现一侧固定宽度,另一侧宽度自适应

这里举的两个例子中,是以左侧为固定宽度,右侧为自适应的宽度。

要实现这样的效果,本质是要实现元素宽度的自适应,而元素宽度自适应有

1、使用行块级元素宽度默认继承父元素宽度,如div

2、设置块元素的宽度为父元素的100%

3、还有一个可能比较少了解的,就是对绝对定位的元素设置left:0和right:0就可以使得元素的宽度展开到父元素的宽度(如果元素的宽度未设置具体宽度)

4、flex弹性布局

如归要实现一侧的宽度自适应,上述中2显然不合适。

html部分的代码:

<div class="box">
    <div class="a">固定宽度的一侧</div>
    <div class="b">自适应的一侧</div>
</div>

方法一:对固定宽度的元素设置float,自适应的一侧(块级元素)通过margin避免两元素的重叠,本质还是利用块级元素具有默认继承父元素宽度的特性。

.a{
    float: left;
    width: 200px;
    height: 200px;
    background-color: aqua;
}
.b{
    height: 200px;
    margin-left: 200px;
    background-color: blue;
}

方法二:对自适应元素设置absolute定位,通过left: 0, right: 0对自适应元素进行宽度拉伸,再通过设置margin-left避免元素重叠

.box{
    position: relative;
}
.a{
    width: 200px;
    height: 200px;
    background-color: aqua;
}
.b{
    height: 200px;
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    margin-left: 200px;
    background-color: blue;
}

方法三:flex布局

.box{
    display: flex;
}
.a{
   /* flex-shrink: 0; */    
    width: 200px;
    height: 200px;
    background-color: aqua;
}
.b{
    height: 200px;
    flex: 1;
    background-color: blue;
}

当然,除了上述还有其它实现方法,比如通过计算属性设置自适应元素的宽度等,不过相对来说,方法一在代码的简洁性或兼容性上,都会更好些。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值