2012-10-12 27 views
1

我想達到這樣的效果:CSS3列數

http://i.imgur.com/GkcjX.jpg

正如你所看到的,有六列(對我4就夠了)。有一些浮動div和圖像跨越4列。使用下面的代碼,在Chromium(Chrome)插入的div的寬度限制爲列的寬度。

http://i.imgur.com/hK4Nk.png

<div style="column-count: 4; -moz-column-count:4; -webkit-column-count:4; text-align: justify"> 
    <p>Header</p><hr /> 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. Proin vitae magna vitae leo auctor consectetur. Pellentesque tempor pretium leo at volutpat. Nunc ultricies, est id ultrices pulvinar, nisl nunc porttitor nisi, aliquet pulvinar dolor neque sed lacus. Integer a risus quis nunc rutrum pellentesque. Praesent non ligula massa, nec gravida mauris. Quisque vitae libero nec augue sollicitudin gravida. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum porttitor, tortor ultricies lacinia gravida, nibh purus ultrices lacus, sed tempus augue ligula ac tortor. Proin urna tortor, tempus quis commodo id, eleifend ut augue. Nulla sit amet dolor tellus. Maecenas et pharetra tellus. Vivamus auctor odio id est imperdiet in tincidunt felis gravida. Vestibulum ultricies mauris ut dolor vulputate lacinia. In imperdiet urna a neque sollicitudin dictum sit amet ut tortor. Duis commodo volutpat mauris, quis euismod magna mattis non. Duis dapibus, felis eu bibendum ultricies, erat urna accumsan sapien, eu congue magna neque in massa. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla nec pretium sem. Proin aliquet nisl at orci cursus auctor. Praesent lacus quam, aliquet at vestibulum nec, euismod sit amet dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam fringilla tincidunt tincidunt. Integer tincidunt vehicula cursus. Quisque sed est auctor arcu ultricies iaculis eget id justo. Sed suscipit tellus et purus dignissim tristique. Ut non purus arcu, sed imperdiet odio. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. 
     Mauris in magna orci. 

     <div style="float: left; width: 700px; height: 200px; background-color: gray"> 
      ff 

     </div> 
     Etiam leo lectus, accumsan at imperdiet sit amet, tincidunt ac tortor. Aenean tellus est, condimentum vitae scelerisque tempus, cursus et nisi. Vivamus ligula lacus, viverra id sodales quis, tempus in lectus. In ut ipsum libero. Aenean vitae orci ligula, non ultricies mauris. Donec metus dolor, feugiat ut blandit vitae, lobortis nec erat. Praesent sapien diam, egestas sit amet commodo a, varius at nulla. Vestibulum fermentum auctor porttitor. Vivamus tristique enim bibendum nulla consectetur molestie. Vivamus lacus velit, dignissim at iaculis id, sodales volutpat odio. Sed mollis consectetur aliquam. Cras rhoncus, nulla non congue porttitor, sapien ipsum lacinia ipsum, pharetra tincidunt arcu ligula id justo. Praesent nec enim tellus, eu aliquam orci.Integer lacinia accumsan nisl at tristique. Sed eget aliquam ipsum. In et magna ut erat posuere ultrices rutrum eget nulla. Nullam mauris nibh, sollicitudin eu aliquet sit amet, pulvinar sit amet tortor. Nunc at nulla sed urna pretium tristique eget quis massa. Quisque ultricies sagittis orci, sed dignissim ante egestas varius. Vivamus et ipsum libero, sagittis euismod enim. Donec volutpat feugiat orci, ut pellentesque nulla sodales gravida. Nulla egestas cursus pharetra. Praesent varius nibh vitae ligula auctor at sollicitudin lacus dapibus. Donec condimentum porttitor sem ac auctor. Mauris a nunc sit amet eros ornare accumsan. Nullam mauris purus, vestibulum id imperdiet sit amet, imperdiet id ante. Nullam nibh leo, pharetra eget fringilla nec, lobortis quis mauris. Fusce varius nulla non orci dapibus ut convallis dolor dictu 
     Duis bibendum, dui sit amet sagittis scelerisque, lectus eros luctus dui, a rhoncus justo nisl sed lectus. Proin placerat suscipit lectus id malesuada. Vestibulum vitae nisl et orci fermentum facilisis. Pellentesque malesuada lacinia tristique. Mauris posuere lorem vitae dolor imperdiet porttitor. Maecenas eu tortor sem. Donec non eros dolor, sed interdum magna. Vivamus id commodo urna. Curabitur dapibus bibendum tincidunt. Praesent tincidunt consectetur metus, ut placerat sem volutpat interdum. Praesent sit amet posuere ipsum. Nunc posuere dolor quis erat pulvinar vitae ornare nibh ultricies. Vestibulum molestie porttitor mauris sed viverra. Nunc rutrum rhoncus lacus ac tincidunt. Nam at arcu ut erat pharetra porttitor. Fusce accumsan dui eget diam placerat vel sodales nisl feugiat.In consectetur orci eu velit porta non tristique velit faucibus. Etiam ac pellentesque sapien. Cras bibendum lorem in felis commodo nec pellentesque mauris fringilla. Maecenas magna augue, facilisis eu dignissim nec, interdum et enim. Pellentesque auctor sapien eu augue volutpat sit amet pretium ipsum vehicula. Aliquam erat volutpat. Nam ut leo eros. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Etiam tortor dolor, molestie at vestibulum nec, dignissim ut est. Donec iaculis vulputate purus et mattis. Morbi pulvinar accumsan mollis. Nulla a est lacus. Ut nisl enim, accumsan ut accumsan et, ultricies sit amet nulla. Nunc lacus purus, cursus et vulputate eget, pharetra id sem. 
     Mauris in magna orci. Etiam leo lectus, accumsan at imperdiet sit amet, tincidunt ac tortor. Aenean tellus est, condimentum vitae scelerisque tempus, cursus et nisi. Vivamus ligula lacus, viverra id sodales quis, tempus in lectus. In ut ipsum libero. Aenean vitae orci ligula, non ultricies mauris. Donec metus dolor, feugiat ut blandit vitae, lobortis nec erat. Praesent sapien diam, egestas sit amet commodo a, varius at nulla. Vestibulum fermentum auctor porttitor. Vivamus tristique enim bibendum nulla consectetur molestie. Vivamus lacus velit, dignissim at iaculis id, sodales volutpat odio. Sed mollis consectetur aliquam. Cras rhoncus, nulla non congue porttitor, sapien ipsum lacinia ipsum, pharetra tincidunt arcu ligula id justo. Praesent nec enim tellus, eu aliquam orci.Integer lacinia accumsan nisl at tristique. Sed eget aliquam ipsum. In et magna ut erat posuere ultrices rutrum eget nulla. Nullam mauris nibh, sollicitudin eu aliquet sit amet, pulvinar sit amet tortor. Nunc at nulla sed urna pretium tristique eget quis massa. Quisque ultricies sagittis orci, sed dignissim ante egestas varius. Vivamus et ipsum libero, sagittis euismod enim. Donec volutpat feugiat orci, ut pellentesque nulla sodales gravida. Nulla egestas cursus pharetra. Praesent varius nibh vitae ligula auctor at sollicitudin lacus dapibus. Donec condimentum porttitor sem ac auctor. Mauris a nunc sit amet eros ornare accumsan. Nullam mauris purus, vestibulum id imperdiet sit amet, imperdiet id ante. Nullam nibh leo, pharetra eget fringilla nec, lobortis quis mauris. Fusce varius nulla non orci dapibus ut convallis dolor dict 
    </p>     
</div> 

在Firefox效果太破。

http://i.imgur.com/80B9k.png

有什麼辦法來實現這一目標?

+1

您正在討論「浮動div」,但您使用的是CSS3列模塊。你想走哪條路? – feeela

+0

這將顯示最終結果。 –

+0

你應該指出你的問題在做什麼...... – feeela

回答

2

CSS3 Multi-column layout module提供了column-span屬性,「可以使元素跨越多個列」。
不幸的是,這個屬性只能假定值爲「all」或「none」(例如,如果您使用4列布局,則不能跨2列上的元素),並且不能應用於浮動或絕對定位的元素。
在W3C規範的previous version中,column-span屬性也可以採用整數值(以精確指定元素跨越多少列),但此選項不存在於最新版本的W3C規範中;舊規格還提供了對列之間的浮動元素的支持,但此功能也已從最新規格中刪除。
在網頁上您可以找到關於CSS3多列布局模塊的幾個教程;在我看來,最好的之一是this one,即使有點舊(2011年11月),它包含一些有用的例子和進一步的參考。
請注意,所有瀏覽器都不支持CSS3多列模塊(有關更多詳細信息,請參閱this page),所以如果您正在尋找跨瀏覽器解決方案,這可能不是最佳選擇。
這麼說,我一直在努力,實現通過使用一些浮動的div你期望的結果:

<!DOCTYPE html> 
<html> 
    <head> 
     <style> 
     #leftblock { 
      width: 66%; 
      margin-right: 10px; 
      float: left; 
     } 
     #rightblock { 
      width: 32%; 
      float: left; 
     } 
     .lefttext { 
      column-count: 2; 
      -moz-column-count: 2; 
      -webkit-column-count: 2; 
      text-align: justify; 
     } 
     #righttext { 
      column-count: 2; 
      -moz-column-count: 2; 
      -webkit-column-count: 2; 
      text-align: justify; 
     } 
     #image1 { 
      width: 100%; 
      height: 200px; 
      background-color: red; 
      margin-bottom: 20px; 
     } 
     #image2 { 
      width: 100%; 
      height: 100px; 
      background-color: green; 
     } 
     h3 { 
      color: blue; 
     } 
     h4 { 
      padding: 0; 
      margin: 0; 
     } 
     p { 
      margin-top: 0; 
      padding-top: 0; 
      margin-bottom: 20px; 
     } 
     .column1 { 
      float: left; 
      width: 50%; 
     } 
     .column2 { 
      float: right; 
      width: 49%; 
     } 
     </style> 
    </head> 
    <body> 
     <div id="leftblock"> 
      <div id="image1"></div> 
      <div> 
       <div class="column1"> 
        <div> 
         <p><b>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero.</b></p> 
         <h3>Author</h3> 
         <hr> 
        </div> 
        <div class="lefttext"> 
         <h4>Title</h4> 
         <p> 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         </p>     
         <h4>Title</h4> 
         <p> 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         </p>     
        </div> 
       </div> 
       <div class="column2"> 
        <div class="lefttext"> 
         <h4>Title</h4> 
         <p> 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         </p>     
         <h4>Title</h4> 
         <p> 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         </p>     
         <h4>Title</h4> 
         <p> 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
         </p>     
        </div> 
       </div> 
      </div> 
     </div> 
     <div id="rightblock"> 
      <div id="righttext"> 
       <h4>Title</h4> 
       <p> 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       </p>     
       <h4>Title</h4> 
       <p> 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       </p>     
       <h4>Title</h4> 
       <p> 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       </p>     
       <h4>Title</h4> 
       <p> 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eget mi a odio dapibus ornare. Phasellus magna lacus, pharetra scelerisque accumsan nec, feugiat ac libero. 
       </p>     
      </div> 
      <div id="image2"></div> 
     </div>    
    </body> 
</html> 

這種解決方案的主要缺點是,你必須仔細「平衡」,在每一個文本的長度div來獲得相同(或幾乎相同)的高度。
我已經在Chromium,Opera和Firefox上測試過這個頁面;因爲我在Linux上工作,所以我不能說它是否也適用於Internet Explorer(它可能不會)。
我知道這可能不是最好的解決方案,但我希望它可以作爲進一步實驗的起點。

+0

我接受你的anwser,因爲它很好知道它在過去實施過但被刪除。 –