まず、HTMLです。コンテナにIDを追加するだけで、簡単に参照を取得できます。
<div class="row show-grid" id="gridcontainer">
<div class="span1 span1-nofloat">Item 1</div>
<div class="span1 span1-nofloat">Item 1</div>
....
<div class="span1 span1-nofloat">Item 1</div>
<div class="span1 span1-nofloat">Item 1</div>
</div>
次にCSS。.span1
見やすくするために、クラスに境界線と間隔を設定しました。
.span1 {
width: 60px;
border: solid 1px #ccc;
padding: 20px;
}
.span1-nofloat {
float: none;
}
.show-grid{
max-height: 220px;
overflow: auto;
white-space: nowrap;
}
.show-column{
display: inline-block;
vertical-align: top;
}
最後に、javascript。これは、onloadイベントから実行するか、HTMLがロードされた直後に実行します。私はこれを一緒に投げたので、おそらく大幅に改善することができます:
var maxheight = 200;
var container = document.getElementById('gridcontainer');
var columns = [document.createElement('div')];
columns[0].className = 'show-column';
var currentcolumn = columns[0];
var currentheight = 0;
var count = container.childNodes.length;
for(var i=0;i<count;i++){
var child = container.childNodes[0];
var height = child.offsetHeight | 0;
if(currentheight + height > maxheight){
currentcolumn = document.createElement('div');
currentcolumn.className = 'show-column';
columns.push(currentcolumn);
currentheight = 0;
}
currentcolumn.appendChild(child);
currentheight += height;
}
container.innerHTML = '';
for(var j=0;j<columns.length;j++){
container.appendChild(columns[j]);
}
変数はコンテナのmaxheight
最大の高さであり、JavaScriptではCSSよりも20px低く設定されているため、コンテナには水平スクロールバー用のスペースがあります。
ソリューションのJSFiddle:http: //jsfiddle.net/djBK3/