写duozhuavue💚服装搜索页面时遇到了一个问题:flex
容器内,两个设置了 flex:1
的项目,最后宽度竟然不是相等的。
问题复现
样例代码
1 2 3 4 5 6
| <div class="box"> <div class="inner">One</div> <div class="inner"> Two has more content xxxxxxxxxxxxxxxxxxxxxxxxxx ssssss </div> </div>
|
1 2 3 4
| .box { width: 300px; display: flex; }
|
1 2 3 4 5 6
| .inner { width: 0; flex: 1; }
|
1 2 3 4 5 6 7
| .inner { overflow: hidden; flex: 1; }
|
总结
- 水平方向的
flex
盒子,可以用来创建等高列,各个列的宽度(尺寸)不一定相等;
- 各个列的最终宽度由
列的初始尺寸
和容器的剩余可用空间
共同决定;
- 初始尺寸由显式设置的宽度决定。如果没有显式设置宽度,则由它们的内容宽度决定。如果没有内容,则宽度为 0;
flex
容器的剩余可用空间(可正可负),根据各个列的 flex-grow
和 flex-shrink
属性分配给各个列;
overflow: hidden;
创建 BFC
容器后,BFC
容器内部内容的宽度不会影响容器宽度;