1. 程式人生 > >flex佈局之flex-basis採坑

flex佈局之flex-basis採坑

場景:

  容器設定為display: flex,容器裡的子專案部分設定 flex: auto,子專案的寬高自適應正常,但如果再往子專案裡巢狀一個(如:div),並設定高度(如:height: 100%),發現該元素高度不符合預期。

原始碼:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
      html,body
{ margin: 0px; padding: 0px; height: 99%; } div{ padding: 5px 10px; border: 1px solid silver; } .container { height: 90%; } .flex{ display: flex; flex-direction: column; } .item { flex
: 1 1 auto; overflow: auto; } </style> </head> <body> <div class="flex container"> <div class=""> <h3>頭部資訊 - 未設定高度資訊</h3> </div> <hr> <div class="item"> flex: auto時高度自適應情況
<div class="container"> 內部巢狀要求自適應高度(百分比)的div </div> </div> </div> </body> </html>

 

不符預期圖:

預期效果圖:

為達到預期其實只對樣式略微做了調整:

.item {
    flex: 1 1 100%;
    overflow: auto;
}
flex是一種簡寫,最後一個值其實就是對應flex-basis的設定,如果同時設定flex-basis和height,那麼height屬性會被覆蓋,也就是說flex-basis的優先順序比height高。有一點需要注意,如果flex-basis和width其中有一個是auto,那麼另外一個非auto的屬性優先順序會更高