2015-05-25 84 views
4

我想在這裏更改列的順序:CSS列數 - 更改訂單

#container { 
 
    position: relative; 
 
    width: 600px; 
 
} 
 

 
#column-wrapper { 
 
    -webkit-column-count: 3; 
 
    -moz-column-count: 3; 
 
    column-count: 3; 
 
    -webkit-column-gap: 20px; 
 
    -moz-column-gap: 20px; 
 
    column-gap: 20px; 
 
} 
 

 
#column-wrapper .column { 
 
    display: inline-block; 
 
    width: 100%; 
 
    padding: 20px 0; 
 
    margin-bottom: 20px; 
 
    background-color: green; 
 
    text-align: center; 
 
    font-size: 20px; 
 
    font-weight: bold; 
 
    color: #fff; 
 
}
<div id="container"> 
 

 
    <div id="column-wrapper"> 
 
     
 
     <div class="column"> 
 
      <span>1</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>2</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>3</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>4</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>5</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>6</span> 
 
     </div> 
 
     
 
    </div> 
 
    
 
</div>

結果應該是這樣的: Column Count

有誰知道一個簡單的解決方案?

+0

你不能改變的HTML標記? :O – odedta

+0

OP,我編輯你的問題使用代碼片段,因爲相關的代碼應該在問題中。請下次自己做。 –

+0

是否需要使用列數?爲什麼不漂浮他們? –

回答

4

爲什麼在需要基於行的訂單時使用列?看起來像the flex model的工作。不改變你的HTML你可以這樣做:

#container { 
 
    position: relative; 
 
    width: 600px; 
 
} 
 

 
#column-wrapper { 
 
    display: flex; 
 
    flex-wrap: wrap 
 
} 
 

 
#column-wrapper .column { 
 
    display: inline-block; 
 
    width: calc(30% - 20px); 
 
    padding: 20px 0; 
 
    margin: 20px; 
 
    background-color: green; 
 
    text-align: center; 
 
    font-size: 20px; 
 
    font-weight: bold; 
 
    color: #fff; 
 
}
<div id="container"> 
 

 
    <div id="column-wrapper"> 
 
     
 
     <div class="column"> 
 
      <span>1</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>2</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>3</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>4</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>5</span> 
 
     </div> 
 
     
 
     <div class="column"> 
 
      <span>6</span> 
 
     </div> 
 
     
 
    </div> 
 
    
 
</div>

+0

非常感謝這個解決方案。正是我在找什麼。 – sascha

+2

當flex-items(「列」)以這種方式對齊時,即使它們具有不同的高度時,是否有任何方法可以使其工作? :) – Alisso

0

你並不需要使用column展現在CSS。改爲使用float,這是自然的文檔流程。

.column {float: left; width: 140px;} 
.column:nth-child(3n+2) {margin: 0 20px;} 
.column:nth-child(3) ~ .column {margin-top: 20px;} 

http://jsfiddle.net/70nk1a1n/1/

+0

在這個例子中是的。但在我的項目中#container的寬度很靈活。 – sascha

+0

@ironman:所以你可以在寬度和邊距/填充處使用'%':-)一切皆有可能,但是當你需要從左到右顯示塊(自然文檔流)時,使用列網格是無意義的做到這一點。 – panther

+0

好吧,這是真的:)但是,如果我有100行,有邊緣問題或? – sascha