2017-02-13 227 views
0

我目前正在嘗試創建一個僅用於各種原因的HTML/CSS網格佈局(我知道Bootstrap等,但在這種情況下,這是沒有選項&,我不能添加標記元素)。CSS只有網格佈局

我有以下代碼(div容器每次其與李的一個UL A冠軍):

<div> 
    <h3>title here</h3> 
    <ul> 
    <li>list-item</li> 
    <li>list-item</li> 
    <li>list-item</li> 
    </ul> 
    <h3>title 2 here</h3> 
    <ul> 
    <li>list-item</li> 
    <li>list-item</li> 
    </ul> 
    <h3>title 3 here</h3> 
    <ul> 
    <li>list-item</li> 
    </ul> 
</div> 

現在我希望能夠創建一個網格佈局。意義例如每個標題的寬度爲33%,所以我可以在旁邊有3個。

問題是每次之間都有一個ul。那麼有沒有可能的浮動解決方案,所以我可以有一個網格佈局作爲結果。

TITLE - TITLE - TITLE 
    ul   ul   ul 

-

h3 { 
    width: 33%; 
    float: left; 
    display: inline-block; 
} 

ul{ 
    float: left; 
    width: 33%; 
    display: inline-block; 
} 

而這一切沒有一個框架。

在此先感謝

+0

如果您可以設置固定尺寸,那麼可能(我會試一試),如果不是,那麼每個組都需要包裝......或者您需要一個腳本,它將會有點棘手。 – LGSon

+0

固定尺寸應該沒問題,我仍然可以使用CSS查找方式重新編輯它們,然後使用mediaqueries然後 – Kemagezien

+0

組數量也需要知道,是否有可能? – LGSon

回答

1

下面是使用現有的標記

請注意,它們從頂部流到底部,不左到右的樣本。

div { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex-wrap: wrap; 
 
    height: 220px;    /* 30px + 80px times 2 row */ 
 
} 
 
div > * { 
 
    width: 33.33%; 
 
    box-sizing: border-box; 
 
} 
 

 
h3 { 
 
    margin: 0; 
 
    height: 30px; 
 
} 
 
ul { 
 
    margin: 0; 
 
    height: 80px; 
 
}
<div> 
 
    <h3>title here</h3> 
 
    <ul> 
 
    <li>list-item</li> 
 
    <li>list-item</li> 
 
    <li>list-item</li> 
 
    </ul> 
 
    <h3>title 2 here</h3> 
 
    <ul> 
 
    <li>list-item</li> 
 
    <li>list-item</li> 
 
    </ul> 
 
    <h3>title 3 here</h3> 
 
    <ul> 
 
    <li>list-item</li> 
 
    </ul> 
 
    <h3>title 2 here</h3> 
 
    <ul> 
 
    <li>list-item</li> 
 
    <li>list-item</li> 
 
    </ul> 
 
    <h3>title 3 here</h3> 
 
    <ul> 
 
    <li>list-item</li> 
 
    </ul> 
 
</div>


更新基於評論

有一種可能性做左到右的構建,可視化,通過使用order財產

div { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex-wrap: wrap; 
 
    height: 220px;    /* 30px + 80px times 2 row */ 
 
} 
 
div > * { 
 
    width: 33.33%; 
 
    box-sizing: border-box; 
 
} 
 
h3 { 
 
    margin: 0; 
 
    height: 30px; 
 
} 
 
ul { 
 
    margin: 0; 
 
    height: 80px; 
 
} 
 
div :nth-child(3), 
 
div :nth-child(4) { 
 
    order: 2; 
 
} 
 
div :nth-child(5), 
 
div :nth-child(6) { 
 
    order: 4; 
 
} 
 
div :nth-child(7), 
 
div :nth-child(8) { 
 
    order: 1; 
 
} 
 
div :nth-child(9), 
 
div :nth-child(10) { 
 
    order: 3; 
 
}
<div> 
 
    <h3>title 1 here</h3> 
 
    <ul> 
 
    <li>1 list-item</li> 
 
    <li>1 list-item</li> 
 
    <li>1 list-item</li> 
 
    </ul> 
 
    <h3>title 2 here</h3> 
 
    <ul> 
 
    <li>2 list-item</li> 
 
    <li>2 list-item</li> 
 
    </ul> 
 
    <h3>title 3 here</h3> 
 
    <ul> 
 
    <li>3 list-item</li> 
 
    </ul> 
 
    <h3>title 4 here</h3> 
 
    <ul> 
 
    <li>4 list-item</li> 
 
    <li>4 list-item</li> 
 
    </ul> 
 
    <h3>title 5 here</h3> 
 
    <ul> 
 
    <li>5 list-item</li> 
 
    </ul> 
 
</div>

+0

謝謝你,像一個魅力工作! – Kemagezien

+0

任何機會,這不是建立自上而下,但正在建立左右 – Kemagezien

+0

@Kemagezien今天晚些時候會看看...讓你知道 – LGSon

0

您的意思是這樣的嗎? https://jsfiddle.net/jw22Lqgo/

h3 { 
display: inline-block; 
} 

ul{ 
display: block; 
} 

.col { 
width: 32%; 
border: 1px solid red; 
display: inline-block; 
} 

.container { 
width: 960px; 
} 
+0

我設置寬度:32%,而不是33%,因爲當添加邊框時,它需要一些額外的空間,它不適合整個寬度容器。 – DevMoutarde

+0

這確實是我想要實現的,但是,我無法在每組h3和ul周圍添加「col」。 – Kemagezien

+0

哦,你不能添加標記?當然,我試圖找到另一種解決方案。但是,如果你打算分開那些,那麼恐怕你無法擺脫這些額外的.coll ... – DevMoutarde