2015-10-15 52 views
2

有沒有辦法創建一個沒有空格的佈局,其中大多數物品的尺寸是相同的,但有些是高度的2倍?我可以做類似的東西我想用下面的CSS:用flexbox增加物品的高度

家長:

display: flex; 
flex-direction: column; 
justify-content: flex-start; 
align-content: flex-start; 
flex-wrap: wrap; 

孩子:

width: 22% 
height: 100px; 

高大的人有height: 200px。它看起來像這樣:

Screnshot 1

這是非常密切的,但問題是,我需要一個左到右的順序,而不是頂部至底部,所以我不能使用flex-direction: column。如果我做同樣的flex-direction: row,這是行不通的:

Screenshot 2

任何想法?

+1

如果大多數項目是相同的維度,只有少數是高度的2倍,請保留您的'列'佈局並使用'order'屬性重新排列它們。如果在您的情況下這是可行的,請告訴我,我會準備一個更詳細的答案。 –

+0

Michael_B,請這麼做,這聽起來像是我最好的解決方案。 –

+1

'order'對於指定數量的div(30+)會非常粗糙......加上它不會響應....您可能需要JS來跟蹤...並且如果您正在使用JS,你不妨使用Masonry.js。 :) –

回答

3

根據您的總體情況,您可能可以使用order屬性。

CSS order屬性指定用於在Flex容器中佈置Flex項目的順序。

這裏是一個基本的flexbox,在column對齊中有20個flex項目。

編號是垂直的,就像在您的第一張圖片中一樣。


隨着order你可以重新安排佈局不改變HTML或flex-direction

項目按列堆疊,但order屬性覆蓋了它們的自然位置並將它們重新排列成行,就像在第二張圖像中一樣。


然後,如果你加倍的幾個項目的大小,你只需要找出正確的排序數學(因爲每一個項目,現在將佔用兩個空格)。

注意項目之間沒有額外的垂直間距。

所有Flex項目默認設置爲order: 0。負值是允許的(即order: -3)。

+1

謝謝!看起來數學會非常複雜,在調整大小的時候,我仍然需要重新計算順序,所以在砌體方面沒有真正的優勢。 –

+0

我剛剛遇到了這個反應,它看起來會幫助我完成我所需要的。謝謝! –