リストやテーブルを簡単かつ綺麗にストライプ状に色分けする方法
リストとかテーブルをストライプ状に色分けしようとするとき、
セルとか列に対して一つ一つクラスをつけて、
そしてCSSで装飾するのが一般的だと思います。
でも、クラスを一つ一つにつけていくのって面倒じゃないですか?
今回紹介する方法を使えば、
簡単かつ綺麗に色分けすることができるので、
参考にしてみてください
面倒なやり方:一つ一つにクラスをつけていく
まずはオーソドックスに、
一つ一つにクラスをつけて行く方法を紹介しておきます。
■HTMLソース
<ul> <li class="list01-odd">リスト1</li> <li class="list01-even">リスト2</li> <li class="list01-odd">リスト3</li> <li class="list01-even">リスト4</li> <li class="list01-odd">リスト5</li> </ul>
■CSS
li.list01-odd { background-color:#cce5ff; } li.list01-even { background-color:#ffffff; }
■プレビュー
- リスト1
- リスト2
- リスト3
- リスト4
- リスト5
数が少ない場合は上記のようにしてもいいのですが、
数の多い場合、例えばリストが100個とか、
テーブルセルがものすごく多いとか、
そんな場合にclassを設定しているのって面倒ですよね。
では、簡単な方法にいってみましょう!
方法へ移る前に
これから紹介する方法は、全てjQueryを使います。
なので、jQueryを使えるように設定をしておきましょう。
jQueryを使えるようにしておくには、
「Google AJAX Libraries APIを利用しよう!」を読んで、
HTMLを編集しておいてください。
そして、以降使うHTMLは以下のようにします。
<ul> <li>リスト1</li> <li>リスト2</li> <li>リスト3</li> <li>リスト4</li> <li>リスト5</li> </ul>
方法1
「jQuer基礎:ベーシックフィルターを学ぶ」で勉強したように、
「:even」「:odd」を使います。
「:even」「:odd」を使って、自動的にclassを設定します。
■設定ソース
<script type="text/javascript"> $(document).ready(function(){ $("li:even").addClass("list02-odd"); $("li:odd").addClass("list02-even"); }); </script>
■プレビュー
- リスト1
- リスト2
- リスト3
- リスト4
- リスト5
CSSは先ほどと同じのを利用しています。
classを自動的につけていくので、一つ一つにわざわざつけなくてよくなり、
作業効率的にもかなり楽になることでしょう。
ポイントは、「:even」になっているところにつけるクラスが「odd」で、
「:odd」になっているところにつけるクラスが「even」になっていることです。
「jQuer基礎:ベーシックフィルターを学ぶ」でも勉強しましたが、
「:even」のスタートは0番目からになります。
リストなどの最初は0番目と偶数だとみなされるのを忘れずに。
方法2
先ほどは自動的にclassをつけていくようにしたのですが、
それだとCSSも設定しなくてはならないので、その分は少し手間です。
なので、classをつけて行くのではなく、
自動的にCSSを変化させていくソースにしてみます。
■設定ソース
<script type="text/javascript"> $(document).ready(function(){ $("li:even").css("background-color","#e0efff"); $("li:odd").css("background-color","#ffffff"); }); </script>
■プレビュー
- リスト1
- リスト2
- リスト3
- リスト4
- リスト5
個人的には先ほどの方法の方が好きなのですが、
好みや用途によって変化させてみてください。
方法3
偶数奇数だけでなく、3色のストライプにしてみる方法も紹介します。
■設定ソース
<script type="text/javascript"> $(document).ready(function(){ $("li:nth-child(3n-2)").css("background-color","#e0efff"); $("li:nth-child(3n-1)").css("background-color","#ffe5e5"); $("li:nth-child(3n)").css("background-color","#edffdb"); }); </script>
■プレビュー
- リスト1
- リスト2
- リスト3
- リスト4
- リスト5
- リスト6
- リスト7
- リスト8
- リスト9
- リスト10
これは、高校の時の数学で勉強したであろう数列の応用。
1、4、7、10・・・の部分に該当するのは「3n-2」
2、5、8、11・・・の部分に該当するのは「3n-1」
3、6、9、12・・・の部分に該当するのは「3n」
と、該当する部分を「:nth-child(数式)」を使って設定できる。
これを応用すれば、数種類の色分けも可能である。
ちょっと余談
タイトルに「綺麗に」なんてつけているわりに、
なんだか色分けがうまくいかなかったかも。。。
ソース的に綺麗にってことで許してください。
jQueryはまだ使ったことがないので、こちらで勉強させていただこうと思います。
あと、リストが閉じ忘れではないですか?
はじめまして!コメントありがとうございます。
といっても、僕はらぶさんのブログをいつも読ませていただいています。
Twitterもフォローしていただき、ありがとうございます。
jQueryは僕も勉強中ですが、その勉強のことをここの載せるようにしています。
参考になるようでしたらぜひまた見てください。
リストの閉じ忘れのご指摘もありがとうございます!
サンプル表示していたHTMLの方で閉じ忘れしていたようですね。
先ほど修正しておきました。