iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
2
Modern Web

重新認識 Flex 和 Grid系列 第 7

[Day07] flex-wrap 換行 / flex-flow

  • 分享至 

  • xImage
  •  

上一篇在談論到相交軸時,提到:「彈性項目單行的數量多到超過容器,你想要讓它換行,它就會以相交軸的方向換行。」所以接下來就會介紹換行的屬性


flexbox 換行

宣告

.container {
    flex-wrap: nowrap | wrap | wrap-reverse;
}
預設:nowrap (不換行)

英文小幫手:
wrap 的意思是包、纏繞,然而 line wrap 就是"換行"的意思。
所以 nowrap 就是不換行,wrap-reverse 就是換行 + 相反(換行方向相反)。

使用範例

<style>
  .container {
    display: flex;
    flex-wrap: nowrap; /*改變屬性值來看看變化*/
    width: 240px;
    height: 240px;
    background-color: #a5def5;
  }
  .item{
    margin: 10px;
    width: 40px;
    height: 40px;
    background-color: #00A0E9;
    color: white;
  }
</style>
<body>
  <div class="container">
    <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
    <div class="item">item4</div>
    <div class="item">item5</div>
    <div class="item">item6</div>
  </div>
</body>

在 W3C 的規範裡,彈性項目預設是 nowrap 不換行的,所以要是彈性項目無法放入主軸,就算有設定彈性項目的尺寸,彈性項目還是會被壓縮至極限小(彈性項目裡內容的最小寬度)。如果壓縮到極限小再不行,就會突破彈性容器。

1. flex-wrap: nowrap

不換行為預設值,可以看到每個 item 的寬度都被壓縮到文字的內容最小寬度,而且突破了彈性容器。

https://ithelp.ithome.com.tw/upload/images/20200920/20128346BCx358HWIL.png

2. flex-wrap: wrap

要換行。彈性容器因為受 align-content(這個屬性之後會提到)的預設值為 stretch (拉伸、伸展的意思)的影響,彈性項目會試圖填滿彈性容器,並且平均分配在容器中。

https://ithelp.ithome.com.tw/upload/images/20200920/20128346yKkwYMRLVD.png

或許你會對這樣的分配方式有疑問?為什麼換行空格這麼大?但因為我有在彈性容器設定長寬各 240px,讓你看看在彈性項目沒設定尺寸時被拉伸的狀況會有多明顯

https://ithelp.ithome.com.tw/upload/images/20200920/20128346S5Y6Mbuh2K.png

3. flex-wrap: wrap-reverse

換行相反,如果你還記得軸向,換行的方向就是相交軸的方向,讓換行的方向相反,也是讓相交軸相反。

https://ithelp.ithome.com.tw/upload/images/20200920/20128346Z6sUWh1KfO.png


flex-flow

宣告

.container {
    flex-flow: flex-direction + flex-wrap;
}
預設:row nowrap

顧名思義就是 flex-direction 和 flex-wrap 的屬性寫在一起。


資料來源:


上一篇
[Day06] 軸向概念 / flex-direction
下一篇
[Day08] flexbox justify-content
系列文
重新認識 Flex 和 Grid30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言