私がしようとしていることは、リストを3つの列に分割することです。私はcss3がこれを行うオプションを持っていることを知っていますが、私はそれをjQueryでやりたいと思っています。アプリケーションはIE 8以上で動作する必要があるためです。jQueryを使用してHTML ul> liを3列に変換する
私は親切にここに私のコード
<ul class="split-list">
<li>list Item 1</li>
<li>list Item 2</li>
<li>list Item 3</li>
<li>list Item 4</li>
<li>list Item 5</li>
<li>list Item 6</li>
<li>list Item 7</li>
<li>list Item 8</li>
<li>list Item 9</li>
<li>list Item 10</li>
<li>list Item 11</li>
<li>list Item 12</li>
<li>list Item 13</li>
<li>list Item 14</li>
<li>list Item 15</li>
<li>list Item 16</li>
</ul>
をチェックしようとしたかを説明します私のjQueryのは
$(function($) {
var num_cols = 3,
container = $('.split-list'),
listItem = 'li',
listClass = 'sub-list';
container.each(function() {
var items_per_col = new Array(),
items = $(this).find(listItem),
min_items_per_col = Math.floor(items.length/num_cols),
difference = items.length - (min_items_per_col * num_cols);
for (var i = 0; i < num_cols; i++) {
if (i < difference) {
items_per_col[i] = min_items_per_col + 1;
} else {
items_per_col[i] = min_items_per_col;
}
}
for (var i = 0; i < num_cols; i++) {
$(this).append($('<ul ></ul>').addClass(listClass));
for (var j = 0; j < items_per_col[i]; j++) {
var pointer = 0;
for (var k = 0; k < i; k++) {
pointer += items_per_col[k];
}
$(this).find('.' + listClass).last().append(items[j + pointer]);
}
}
});
});
最後に私の小さなCSS
.split-list ul{
float: left;
margin-left: 1em;
}
.split-list li{
padding-right: 2em;
line-height: 1.5em;
font-size:12px;
}
これは3列に分かれていますが、問題は通常の標準であるためリスト項目12を2番目の列に引っ張りたいという問題です。常に左のものを入力し、動的でなければなりません。
誰かが私を助けることができますか?
あなたが<li>
要素は、単にこのようなCSSを使用するための3つの列を達成することができます
あなたのリストには、どのように多くのアイテムを持っているのだろうか?それは常に16を持っていますか? – DCR
3つのリストに分割してみませんか? 3つのリストを並べて並べます。 – epascarello
あなたの結果は大丈夫です。合計16項目ですので、3 * 5 = 15と最後の1は左に置かれます –