我正在尝试创建平衡的(2-)列布局。

内容不是文本,而是块,并且高度不同。
只要“左”和“右”具有(大约)相同的高度,内容就应该左右交替放置。

IE。在此图像中:

1和3之间的空格不应该存在。

或在此图像中:

2个应单独位于右侧,而1个,3个及4个则应位于左侧(它们之间没有空隙)。

我尝试像这样使用“floating <li>”:

HTML:

<ol class="context">
    <li class="gruppe">1</li>
    <li class="gruppe">2.0<br />2.1</li>
    <li class="gruppe">3.0<br />3.1</li>
    <li class="gruppe">4</li>
</ol>

CSS:
ol.context
{
  border: 1px solid #048;
  list-style: none;
  margin: 0;
  padding: 0 0 8px 0;
  overflow: auto;
}

li.gruppe
{
  background: #048;
  color: white;
  float: left;
  font: bold 32px Arial, sans-serif;
  margin: 1px;
  text-align: center;
  width: calc(50% - 2px);
}

(请参阅attempt 1attempt 2)

我也尝试过使用列的(column-count: 2; column-fill: auto;),但这不会首先填充从左到右的列。 (它首先从上到下填充。)

如果没有JavaScript,这是否有可能?

最佳答案

我想说如果没有JS,这是不可能的。这是我根据本·霍兰德(Ben Holland)的一篇文章制作的 fiddle 。至少对我来说,你看起来像什么。

http://jsfiddle.net/QWsBJ/2/

HTML:

<body onload="setupBlocks();">
  <div class="block">
    <p>***Content***</p>
  </div>
  <div class="block">
    <p>***Content***</p>
  </div>
  <div class="block">
    <p>***Content***</p>
  </div>
  <div class="block">
    <p>***Content***</p>
  </div>
  <div class="block">
    <p>***Content***</p>
  </div>
</body>

CSS:
.block {
  position: absolute;
  background: #eee;
  padding: 20px;
  width: 300px;
  border: 1px solid #ddd;
}

JS:
var colCount = 0;
var colWidth = 0;
var margin = 20;
var blocks = [];

$(function(){
    $(window).resize(setupBlocks);
});

function setupBlocks() {
    colWidth = $('.block').outerWidth();
    colCount = 2
    for(var i=0;i<colCount;i++){
        blocks.push(margin);
    }
    positionBlocks();
}

function positionBlocks() {
    $('.block').each(function(){
        var min = Array.min(blocks);
        var index = $.inArray(min, blocks);
        var leftPos = margin+(index*(colWidth+margin));
        $(this).css({
            'left':leftPos+'px',
            'top':min+'px'
        });
        blocks[index] = min+$(this).outerHeight()+margin;
    });
}

Array.min = function(array) {
    return Math.min.apply(Math, array);
};

关于css - CSS3中的平衡交替列布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17597956/

10-13 01:59