2009年11月25日

jQueryでストライプの装飾 :nth-child()

人気ブログランキングにほんブログ村 IT技術ブログへ

jQueryでテーブルにストライプで装飾するチュートリアルを試してみました。

jQueryで動的に装飾するので、後からデータを追加・削除してもcssやhtmlをいじる必要がまったく無いのが利点です。

キーとなるフィルターは:nth-child()

nth-child()

セレクターで指定した要素のうち、n番目の要素を選択する。()内はeven(偶数) odd(奇数) 2(2番目) 3n(3の倍数) 3n+1(3n+1番目)など。

ASCII.jp:CSS3のセレクターで作るストライプテーブル |Web制作の現場で使えるjQuery UIデザイン入門を参考に、以下の表を作成しました。


見出見出見出見出見出見出見出見出見出見出見出見出
内容内容内容内容内容内容内容内容内容内容内容内容
内容内容内容内容内容内容内容内容内容内容内容内容
内容内容内容内容内容内容内容内容内容内容内容内容
内容内容内容内容内容内容内容内容内容内容内容内容
内容内容内容内容内容内容内容内容内容内容内容内容
内容内容内容内容内容内容内容内容内容内容内容内容
内容内容内容内容内容内容内容内容内容内容内容内容

コードは以下の通り。
<style type="text/css">
table#stripetable {
border-collapse:collapse;
background-color:#eeeeee;
}
table#stripetable th {
color:#fff;
background-color:#aaa;
padding:5px;
}
table#stripetable td {
padding:5px;
}
table#stripetable .even {
background-color:#fff;
}
table#stripetable .hover {
background-color:#aaaaff;
}
</style>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$("#stripetable tr:nth-child(even)").addClass("even");
$("#stripetable tr:not(:first-child)").mouseover(function(){
$(this).addClass("hover");
}).mouseout(function(){
$(this).removeClass("hover");
});
$("#stripetable td").mouseover(function(){
$("#stripetable td:nth-child("+($("#stripetable td").index(this)%$("#stripetable th").size()+1)+")").addClass("hover");
}).mouseout(function(){
$("#stripetable td:nth-child("+($("#stripetable td").index(this)%$("#stripetable th").size()+1)+")").removeClass("hover");
});
})
</script>
<table id="stripetable">
<tr>
<th>見出</th><th>見出</th><th>見出</th><th>見出</th><th>見出</th><th>見出</th><th>見出</th>
<th>見出</th><th>見出</th><th>見出</th><th>見出</th><th>見出</th>
</tr>
<tr>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
</tr>
<tr>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
</tr>
<tr>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
</tr>
<tr>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
</tr>
<tr>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
</tr>
<tr>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
<td>内容</td><td>内容</td><td>内容</td><td>内容</td><td>内容</td>
</tr>
<tr>
<th>見出</th><th>見出</th><th>見出</th><th>見出</th><th>見出</th><th>見出</th><th>見出</th>
<th>見出</th><th>見出</th><th>見出</th><th>見出</th><th>見出</th>
</tr>
</table>


同じカテゴリー(jQuery)の記事画像
jQueryでIE6を透過PNGに対応させる
jQueryで作るロールオーバー
jQueryで作るオリジナルツールチップ
jQueryでのアニメーション animate()
jQueryのアニメーションfadeIn Out To
jQueryのアニメーションslideUp Down 他
同じカテゴリー(jQuery)の記事
 jQueryでIE6を透過PNGに対応させる (2009-12-16 20:34)
 jQueryで作るロールオーバー (2009-12-12 18:00)
 jQueryで作るオリジナルツールチップ (2009-12-11 23:44)
 jQueryで作るタブパネル (2009-12-10 18:00)
 jQueryで作るアコーディオンパネル (2009-12-09 18:00)
 jQueryでイメージギャラリーを作成。 (2009-11-29 17:58)

Posted by ヒダカ at 17:15│Comments(0)jQuery
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。