![](/img/trans.png)
[英]`flex-basis: auto` sizes parent as if child were `flex-basis: auto`, when child is `flex-basis:10px`
[英]Flex-basis unless no child exists
我使用flex CSS進行以下布局,並且我的左容器設置為寬度為20%。 如果.col.left-col為空(som divs渲染為.my-left-div),我希望它折疊。
如果我將.grid--container .left-col
更改為.grid--container .my-left-div
,則.left-col的寬度不再是20%,而是更多,如果沒有JavaScript,是否可以解決?
---------------------------------
| top |
---------------------------------
| | | |
| left | middle | right |
| | | |
| | | |
| | | |
| | | |
| |------------------------
| | bottom |
---------------------------------
的HTML是這樣的。
.grid--container { display: flex; width: 100%; justify-content: left; } .grid--container .left-col { flex: 0; flex-basis: 20%; } .grid--container .top { margin-top: 28px; } .grid--container .right-col { flex: 1; padding-left: 20px; } .grid--container .wrapper { display: flex; } .grid--container .wrapper > div { flex: 1; }
<div class="grid--container"> <div class="col left-col"> left </div> <div class="col right-col"> <div class="top"> top </div> <div class="wrapper"> <div class="middle"> middle </div> <div class="right"> right </div> </div> <div class="bottom"> bottom </div> </div> </div>
解決了:
通過使用:empty選擇器。
.grid--container { display: flex; width: 100%; justify-content: left; } .grid--container .left-col { flex: 0; flex-basis: 20%; } .grid--container .left-col:empty { flex-basis: 0%; } .grid--container .top { margin-top: 28px; } .grid--container .right-col { flex: 1; padding-left: 20px; } .grid--container .wrapper { display: flex; } .grid--container .wrapper > div { flex: 1; }
<div class="grid--container"> <div class="col left-col"> left </div> <div class="col right-col"> <div class="top"> top </div> <div class="wrapper"> <div class="middle"> middle </div> <div class="right"> right </div> </div> <div class="bottom"> bottom </div> </div> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.