2013-12-15 65 views
11

我有一組圖像,我想在以下模式來顯示的動態數:CSS3列布局的列

[1] [4] [7] [10] [13] 
[2] [5] [8] [11] ... 
[3] [6] [9] [12] 

我知道我可以隨時手動組3點的圖象分成一類似div.column或東西,但我想用盡可能簡單的HTML來實現這種佈局。圖像是225x150。


目前,我有以下的HTML:

<div class='album'> 
    <img src='img/01.jpg' /> 
    <img src='img/01.jpg' /> 
    ... 
</div> 

這是我的樣式表:

.album { 
    background: #faa; 
    display: block; 
    -webkit-column-count:2; 
    -webkit-column-gap: 10px; 
    height: 450px; 
    width: 460px; 

} 
.album img { 
    display: block; 
    width: 100%; 
} 

Chapter 8.2的規格介紹,如果我指定的高度和內容不適合,根據需要創建更多的列,這基本上就是我想要的。

正如您所看到的,我爲.album指定了背景顏色。這隻包括前兩列,因爲我將寬度設置爲460px。但是,我確實需要一個具有相冊內容的確切大小/寬度的元素,即包含具有該確切大小的相冊的元素。

我嘗試過的所有可能性似乎都不起作用。 (100%,auto,與overflow一起玩)

有沒有人有一個想法,我可以如何創建這樣的我的相冊包裝元素?

回答

6

因爲使用內聯元素中的列(內嵌塊等)會導致某些瀏覽器錯誤地計算元素的寬度,所以可能會因爲此目的而使用Flexbox。

http://codepen.io/cimmanon/pen/vuxjF

.album { 
    background: #faa; 
    height: 480px; 
    padding: 5px; 
    display: -ms-inline-flexbox; 
    display: -webkit-inline-flex; 
    -webkit-flex-flow: column wrap; 
    -ms-flex-flow: column wrap; 
    flex-flow: column wrap; 
    -ms-flex-align: start; 
    -webkit-align-items: flex-start; 
    align-items: flex-start; 
} 
@supports (flex-wrap: wrap) { 
    .album { 
    display: inline-flex; 
    } 
} 

.album img { 
    margin: 5px; 
} 
+0

感謝您的回答,但我的主要問題仍然存在。我將如何讓'.album'具有最小寬度以適合其內容或將其包裝在具有該大小的元素中? –

+0

或者,我將如何強制某些圖像在一個新的列? –

+0

高度迫使元素纏繞。顯然,Webkit/Blink對Pre-line的inline-flex有不同的解釋,它的工作原理與預期完全相同:-(不清楚誰在這裏是正確的 – cimmanon