css 浮动元素形成排列的网格

css floating elements forming an arranged grid

我正在努力解决一个悬而未决的问题。

我得到了 50% 的元素对,其中一个总是比另一个高。对于每一对新的元素,较高的元素改变边(例如,左边的第一对高元素,右边的第二对高元素)。

我需要让它们看起来像这样的模式 (link):

这是我得到的:

.main {
  width: 500px;
}
.container {
  width: 100%;
}
.box50 {
  width: 50%;
  border: 1px solid black;
  float: left;
  box-sizing: border-box;
}
.high {
  height: 120px;
}
.low {
  height: 50px;
}
<div class="main">
  <div class="container">
    <div class="box50 left high">
      <p>1</p>
    </div>
    <div class="box50 right low">
      <p>2</p>
    </div>
  </div>
  <div class="container">
    <div class="box50 left low">
      <p>3</p>
    </div>
    <div class="box50 right high">
      <p>4</p>
    </div>
  </div>
</div>

通过清除第二行,我得到了 div 的正确顺序,但我无法在上面的空 space 中得到更高的元素。

是否有 css 解决方案?

你试试 url http://masonry.desandro.com/ 它会给你解决方案

我给你举了个例子。 http://jsfiddle.net/zweapes6/1/

注意我使用的方式

rows > column > content

最好先制作两列 50% 并将它们并排放置,然后将另一列 divs 放在里面。

还有一点要记住,在构建某些东西时使用固定高度(如 120px)不是一个好主意 responsive

或者像 Maheswaran 建议的那样使用砖石结构。

HTML

<div class="container">
    <div class="main">
        <div class="left right">
            <div class="box50  high">
                <p>1</p>
            </div>
            <div class="box50  low">
               <p>3</p>
            </div>
         </div>
           <div class="left right">
               <div class="box50  low">
                    <p>2</p>
               </div>
                <div class="box50 high">
                    <p>4</p>
                </div>
           </div>
        </div>
</div>

CSS

.container {
    width: 50%;
}
.main:after{
    clear:both;
    display:table;
    content:'';
}
.box50 {
    border: 1px solid black;
    box-sizing: border-box;

}
.high {
    height: 120px;
}
.low {
    height:50px;
}
 .left{
    float : left;
    display : block;
}
    .right{
    width : 50%;
}
* {margin:0; padding:0;}