flex布局踩过的坑:flex速记设置flex-grow和直接设置flex-grow的浏览器表现差异

今天看网上讲的二列布局,左侧宽度不固定,右侧宽度自适应的实现,其中有一例,code如下:

HTML代码:

<body>
<div id="parent">
    <div id="left">左列不定宽</div>
    <div id="right">右列自适应</div>
</div>
</body>

CSS代码:

#parent{
    display: flex;
}
#left { /*不设宽度*/
    margin-right: 10px;
    height: 500px;
    background-color: #f00;
}
#right {
    height: 500px;
    background-color: #0f0;
    
flex: 1;

/*均分#parent剩余的部分*/}
作者:sweet_KK
链接:https://juejin.im/post/5aa252ac518825558001d5de
来源:掘金
谢谢sweet_KK大大的好文,侵删,谢谢。

这个代码在Chrome 66下的表现为:


但是当我把代码的

flex: 1  // 改动成 ==> flex-grow:1

结果变成了


像这样,不再是右侧自适应了,当没有了空闲距离,二者因为内部字数相同,居然开始平分剩下的空间了???

what?难道flew:1不是和flew-grow:1一个意思么?

于是我又试了试...

先是flex:0.5:


然后是flex-grow:0.5:


另,在firefox中也是如此。

可以很明显的观察出,当时flex的时候,设置这个属性的flex项目不算,剩余空间的一半一直等于他的宽度,直到无法溢出了为止。但是flex-grow的时候呢?却是把本身就应该占据的空间除了外,剩下的空间再占一半。当没有剩余空间了,他就回归了本来的宽度,并且与左侧平分天下。

顺路一提,在flex下设置overflow:hidden之后会压缩到0,但flex-grow下仍然没用。

我认为就是浏览器对这两个属性的表现有所不同,如有高人踩过同一个坑,请不吝赐教!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值