1

我试图达到这样的效果:

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>

火狐上的效果也坏了。

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

有什么办法可以做到这一点?

4

1 回答 1

2

CSS3 多列布局模块提供了column-span属性,它“使一个元素可以跨越多个列”。
不幸的是,此属性只能假定值“all”或“none”(例如,如果您使用 4 列布局,则不能仅将元素跨越 2 列)并且不能应用于浮动或绝对定位的元素。
以前版本的 W3C 规范中,column-spanproperty 也可以假设一个整数值(以准确指定元素跨越多少列),但这个选项在 W3C 规范的最新版本中不存在;旧规范还提供了对列之间浮动元素的支持,但此功能也已从最新规范中删除。
在网上你可以找到一些关于 CSS3 多列布局模块的教程;在我看来,最好的一个是这个,即使有点旧(2011 年 11 月),它也包含一些有用的示例和进一步的参考。
请注意,并非所有浏览器都支持 CSS3 多列模块(有关详细信息,请参阅此页面),因此如果您正在寻找跨浏览器解决方案,这可能不是最佳选择。
也就是说,我试图通过使用一些浮动 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 上工作(它可能不会)。
我知道这可能根本不是最好的解决方案,但我希望它可以成为进一步试验的起点。

于 2012-10-20T21:13:03.293 回答