の真ん中にあるdivの決定:私は、リストの真ん中にあるdiv要素を決定する必要があり私はこのようになりますdivのリスト持つdivのリスト
<div class="item"></div>
<div class="item"></div>
<div class="item"></div> <!--the middle one-->
<div class="item"></div>
<div class="item"></div>
を、そのDIVに注意してください数字は動的で、ユーザーの入力に依存します。私の最終的な目標は、どのdivが "middle div"の左右にあるのかを判断し、クラスを適用することはその位置に依存することです。
最終的な結果は次のようになります。
<div class="item left"></div>
<div class="item left"></div>
<div class="item center"></div> <!--the middle one-->
<div class="item right"></div>
<div class="item right"></div>
私はそれぞれのdivの番号識別子を追加し、「ミドルDIV」を決定するために、中央値を使用するように考えていたが、私はかなりよく分かりません。
おそらく、この問題のために、javascript、jquery、または純粋なCSSを使用する方が良いでしょうか?
更新:偶数を処理するための
追加情報:
リストは、子のdivの数が偶数の場合には、それは両方、私の問題で、この
<div class="item left"></div>
<div class="item left"></div>
<div class="item left"></div>
<div class="item right"></div>
<div class="item right"></div>
<div class="item right"></div>
のようにそれを分割する必要がありますRory McCrossanとuser3297291はうまく動作します。私は、偶数を扱うために両方の変更を加えました。
(jQueryを使って)ロリーMcCrossanさん:
var $items = $('.item');
var middleIndex = Math.floor($items.length/2);
var hasMid = $items.length % 2;
console.log(middleIndex);
if(hasMid == 1){
$items.eq(middleIndex).addClass('middle')
.prevAll().addClass('left').end()
.nextAll().addClass('right');
}
if(hasMid == 0){
$items.eq(middleIndex).addClass('right')
.prevAll().addClass('left').end()
.nextAll().addClass('right');
}
user3297291さん:それは私の編集後に非常にきちんとしていないかもしれないよう
var setMidClasses = function (elementList, beforeMid, atMid, afterMid) {
var i = 0,
hasMid = elementList.length % 2,
mid = Math.floor(elementList.length/2);
while (i < mid) {
elementList[i].classList.add(beforeMid);
i += 1;
}
if (hasMid == 1) {
elementList[i].classList.add(atMid);
i += 1;
}
while (i < elementList.length) {
elementList[i].classList.add(afterMid);
i += 1;
}
};
setMidClasses(document.querySelectorAll(".item"),
"left", "middle", "right");
コードスニペットを編集して自由に感じます。
はどうなりますか? –