- ベストアンサー
jQueryでCSSの値を短縮
- jQueryを使用してCSSの値を短縮する方法を教えてください。
- jQueryコードを最適化してCSSの値を短くする方法を教えてください。
- for/while文を使用してCSSの値を短縮する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ほとんど同じなのと、ループ内で同じ計算をしてしまっていますが・・・ var icoPos = ($(window).width() / 4); for(var i=0; i<16; i++){ var selector = "li.icon" + (i<9?"0"+(i+1):i+1); var position = (-icoPos * (i%4)) + "px "; position += (icoPos * (i/4|0)) + "px"; $(selector).css("background-position", position); } ところで、background-positionの指定ってこれでいいんでしたっけ? (キャメルケースだったかも…)
その他の回答 (1)
- y_free_temp
- ベストアンサー率50% (7/14)
なにやら複雑ですねぇ 可読性無視で単純にループ化するとこんな感じかなぁ var icoPos = ($(window).width() / 4); var pos01 = '-'+icoPos+'px'; var pos02 = '-'+(icoPos*2)+'px'; var pos03 = '-'+(icoPos*3)+'px'; var basePos = [ '0', pos01, pos02, pos03 ]; for ( var i = 0; i < 16; i+=4 ) { $('li.icon0' + (i + 1)).css('background-position', '0 ' + basePos[i%4]); $('li.icon0' + (i + 2)).css('background-position', pos01+' ' + basePos[i%4]); $('li.icon0' + (i + 3)).css('background-position', pos02+' ' + basePos[i%4]); $('li.icon0' + (i + 4)).css('background-position', pos03+' ' + basePos[i%4]); }
お礼
回答ありがとうございます! この状態だとicon01~icon09までしかbackground-positionが付与されないため、改修が必要でした。for(i++)ばかり使ってるので、for(i+=4)とかはちょっとパッと出てこなかったです…勉強になります。ありがとうございます。 ちなみに関係ないどうでもいい情報ですが、俺も12/6生まれですのでなんとなく嬉しかったです。
お礼
position += (-icoPos * (i/4|0)) + "px"; で完璧でした!ちょっと紐解かないと理解できない箇所もあるので(i%4とか…)、勉強させてもらいます。ありがとうございます。 >ところで、background-positionの指定ってこれでいいんでしたっけ? クォーテーションを付与しない場合は、キャメルケースですね。