我最近开始使用flexbox,经常出现需要在元素之间的主轴上分配空间的情况。
我经常在width和flex-grow之间犹豫不决。例如,如果我想让一个项目测量2个度量值,而另一个度量值加起来为100%,我有两个选择。我可以设置width: 66.6%和width: 33.3%,也可以设置flex-grow: 2和flex-grow: 1。
有时,如果我想让一个元素扩展其余的空间,我可以使用width: 100%或flex-grow: 1。
我该如何选择?使用width和flex-grow有什么区别/注意事项?
发布于 2016-01-12 09:29:47
width和flex-grow是两个完全不同的CSS属性。
width属性用于定义元素的宽度。
flex-grow属性用于分配flex容器中的空闲空间。此属性不会像width属性那样将特定长度应用于元素。它只是允许flex项目消耗任何可用的空间。
有时,如果我想让一个元素增长其余的空间,我可以使用
width: 100%或flex-grow: 1。我该如何选择?
是的,如果行中只有一个元素,则width: 100%和flex-grow: 1可能具有相同的效果(取决于padding、border和box-sizing设置)。
但是,如果有两个元素,并且您希望第二个元素占用剩余空间,该怎么办?如果容器中有同级,则width: 100%会导致溢出。我猜你可以这样做:
width: calc(100% - width of sibling);但是如果同级的宽度是动态的或未知的呢?calc不再是一个选项。
快速而简单的解决方案是flex-grow: 1。
width和flex-grow是苹果对橙子,而width和flex-basis是苹果对苹果。
flex-basis属性设置flex项的初始主大小,类似于width。
有关flex-basis和flex-grow之间的区别,请参阅:
https://stackoverflow.com/questions/34733955
复制相似问题