在使用flex盒子模型一段时间之后,发现【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】这货的坑真是不少,其中最最让人难理解的,【转载请注明来源】【关注微信公众号:wwwtangshuangnet】就是它的flex-grow部分的子元素无【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。法使用100%的对应尺寸。下面来举个例子【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net:
【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。本文作者:唐霜,转载请注明出处。<div style="display: flex; width: 300px; height: 200px;">
<div style="width: 100px;"></div>
<div style="flex-grow: 1">
<div style="width: 100%; height: 100%; overflow: auto;"></div>
</div>
</div>
上面的代码,我们希望创建一个盒子,盒子左【作者:唐霜】原创内容,盗版必究。边有一个固定100px宽度的div,右边转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。说一个填满剩余空间的弹性伸缩div。而在【未经授权禁止转载】【转载请注明来源】这个弹性伸缩的div内部,我们希望放一个原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。塞满整个区域的容器,容器设置了overf著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。low: auto,因此,当这个容器内的【版权所有,侵权必究】【作者:唐霜】内容超出可视区域时,会出现滚动条。
转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net然而,事情没有想像的那么容易,上面的wi转载请注明出处:www.tangshuang.net原创内容,盗版必究。dth: 100%并不会按我们想象的方式未经授权,禁止复制转载。【本文受版权保护】,使用它的父元素的宽度,而是会使用300【本文受版权保护】原创内容,盗版必究。px。
本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。这是因为,再css标准里面,width/【关注微信公众号:wwwtangshuangnet】【本文受版权保护】height如果是百分比的话,必须为它的【转载请注明来源】【版权所有】唐霜 www.tangshuang.netparent提供一个确定的width/h【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。eight,当然,parent的widt【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。h/height也可以从再上一层继承。而未经授权,禁止复制转载。未经授权,禁止复制转载。如果上面这个条件不成立的话,parent原创内容,盗版必究。原创内容,盗版必究。会继续向上冒泡,直到找到一个确定的对应宽本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net高为止。
【本文受版权保护】原创内容,盗版必究。本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net不幸的是,flex的flex-grow是【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。不确定的,因此,这里的width: 10【原创不易,请尊重版权】【原创不易,请尊重版权】0%不能按我们想象的方式展现。
【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】【访问 www.tangshuang.net 获取更多精彩内容】如何解决这个问题呢?那就是再在flex-【本文首发于唐霜的博客】【作者:唐霜】grow元素的内部使用flex布局,它自转载请注明出处:www.tangshuang.net【本文受版权保护】己是弹性伸缩的,而你可以使它的内部元素也转载请注明出处:www.tangshuang.net【关注微信公众号:wwwtangshuangnet】是弹性伸缩的:
【作者:唐霜】未经授权,禁止复制转载。【原创内容,转载请注明出处】<div style="display: flex; width: 300px; height: 200px;"> <div style="width: 100px;"></div> <div style="flex-grow: 1; display: flex;"> <div style="flex-grow: 1; height: 100%; overflow: auto;"></div> </div> </div>
这样修改之后,就可以达到我们的目的。【本文首发于唐霜的博客】
未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。通过这个问题的分析,基本就掌握了flex本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】里面的精髓。“弹性”代表着没有固定宽度,【未经授权禁止转载】本文作者:唐霜,转载请注明出处。而想要占满弹性容器,就必须在该容器本身实【本文受版权保护】转载请注明出处:www.tangshuang.net现一个新的弹性盒子模型。
【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】
