jQueryでタブメニューを作るの巻

JavaScriptのライブラリであるjQueryを用いたタブメニューを作ろうと思うが、
何故かどこを回ってもtab.UIと言う外部プラグインを使ったものしかない……
画像を使うとか、そんな重そうな物ばかり……
無いのなら、作ってしまえホトトギスと言うことで、簡易タブメニューを作成した。

サンプル

使用しているのはインラインのjquery命令と、外部CSSである。
ちなみに対象部のHTMLはこれ


<ul id="tab_list">
 <li id="p_tab">personal</li>
 <li id="d_tab">diary</li>
 <li id="b_tab">bookmark</li>
</ul>
<div id="personal" class="tab_body">中身1</div>
<div id="rss" class="tab_body">中身2</div>
<div id="bookmark" class="tab_body">中身3</div>

ulの中のliがタブのメニューになる。
その下のdivタグで囲まれた3つがタブの中身である。
それをCSSでこう味付けする(firefoxとsafariで角丸に見える部分は排除)。


#tab_list{
 line-height:1em;
 margin:0;
 margin-left:1em;
 margin-bottom:1px;
 position:relative;
 z-index:0;
}

タブの縦の長さを1文字分にして左と下を少し開け位置を相対位置にする。
下を1pxあけないとタブが本文部分に食い込んでしまうので要注意。
Firefox3.xのみ1pxあけてもまだ食い込んでいるので、位置表示を相対化する。


#tab_list li{
 display:inline;
 background-color:white;
 padding:0 4px;
 margin:0 0.1em;
}

リスト要素をインライン化し、背景を白塗りにした後、要素の左右を4pxずつ空ける
左右をあけない場合はpaddingを指定しないこと。
また、要素内が一杯に見えないよう左右を0.1文字ずつ広げておく。
この辺は好みで行ってください。


ul li#d_tab{background-color:#aabbff;}
ul li#b_tab{background-color:#aabbff;}

選択されていない2つのタブの色を変え、選択されていないことが分かるようにする
この辺の色もタブの色に合わせて適宜変更してください。


.tab_body{
 background-color:white;
 padding:10px;
 position:relative;
 z-index:1;
}

タブ本体の背景色を設定して相対表示にした後、
タブ自身より前に表示されるようにZ軸の指定を行う
(Firefox3.xでの食い込み対策)


#rss{display:none;}
#bookmark{display:none;}

選択されていないブロック要素を非表示にする。
ここまでで選択できないタブメニューと一つの要素の表示は完成です。
外見だけならタブメニューっぽく見えるようになりました。
後は、jQueryを使って料理していきます。


<script type="text/javascript">
$(function(){
 $("#p_tab").click(function (){
  $("#p_tab").css("background-color","white");
  $("#d_tab").css("background-color","#aabbff");
  $("#b_tab").css("background-color","#aabbff");
  $("#personal").css("display","block");
  $("#rss").css("display","none");
  $("#bookmark").css("display","none");
 });
});
</script>

タブ一つ分の命令です。
$(”#p_tab”).click(function ()で
idがp_tabの要素がクリックされた場合に動くようになっています。
$(”#p_tab”).css(”background-color”,”white”);でp_tabの背景を白に
$(”#d_tab”).css(”background-color”,”#aabbff”);と
$(”#b_tab”).css(”background-color”,”#aabbff”);で
残りのタブの背景を非選択色に変更しています。
$(”#personal”).css(”display”,”block”);でidがpersonal要素を表示
$(”#rss”).css(”display”,”none”);と
$(”#bookmark”).css(”display”,”none”);は
その他の要素を非表示にしています。

これを残りのタブ要素にも適用することで完成です。

<script type="text/javascript">
$(function(){
 $("#p_tab").click(function (){
  $("#p_tab").css("background-color","white");
  $("#d_tab").css("background-color","#aabbff");
  $("#b_tab").css("background-color","#aabbff");
  $("#personal").css("display","block");
  $("#rss").css("display","none");
  $("#bookmark").css("display","none");
 });
 $("#d_tab").click(function (){
  $("#p_tab").css("background-color","#aabbff");
  $("#d_tab").css("background-color","white");
  $("#b_tab").css("background-color","#aabbff");
  $("#personal").css("display","none");
  $("#rss").css("display","block");
  $("#bookmark").css("display","none");
 });
 $("#b_tab").click(function (){
  $("#p_tab").css("background-color","#aabbff");
  $("#d_tab").css("background-color","#aabbff");
  $("#b_tab").css("background-color","white");
  $("#personal").css("display","none");
  $("#rss").css("display","none");
  $("#bookmark").css("display","block");
 });
});
</script>

タブメニューと言っていますが、実質は最初に全ての要素を読み込んで、
選択していない物を非表示にしてタブの色を変更しています。
タブが選択されることでタブの色の変更を行い、
同時に選択された要素のブロックを表示、
選択されていない要素を非表示にしています。

一番苦労したのはFirefoxの挙動が変なことでCSSでの対策……
なんで2.xできつちり動いていたのを3.xで変にするかなあ

下記環境で確認しました
WinXP + IE7.0・WinXP+Firefox3.0・MacOSX + Safari
ちなみに、Firefox2.xでは1px離れて見えますが、古いブラウザなので無視><


Web | コメント (0) | 2008-07-13 |

環境

環境のせいでオタになっただと!?
違うねっ!! こいつは生まれついての(ry

Macが帰ってきて殆どの環境は以前通りに戻したものの、
いくつかブックマークで行けなくなってしまったところもある。
ぐぐれかすせんせいにも引っかからないので探しようがないという。
ああ、なんという、なんという。

ミクスver2.1

女の子っぽく見えるようスカート?をフレア状に広げてみる


Web | コメント (0) | 2008-06-04 |

ミクス

マスコット案バージョン2
ネクサスっぽさとラティアスっぽさはどこに…

と言うわけでサイドバーに任天堂大辞典の更新情報と
ケータイから写メとかで投稿するミニブログを重い設置。
写真があるときはそれでアップしよう。


Web | コメント (0) | 2008-06-02 |

10000ヒットらしい

トップページが10000ヒットしていた。
PCが壊れてぐだぐだやっている間に。何という。

こんなサイトでスミマセン、スミマセン!
私のせいで任天堂の格を下げてスミマセン、スミマセン!


Web | コメント (2) | 2008-05-30 |

地獄の門

地獄の門

いやあ、凄いですねえ、日本にも一カ所ぐらいあれば見に行くのに!

トラベルミステリー
地獄の門殺人事件 冬は愛と殺人の季節

こんな感じで


Web | コメント (0) | 2008-05-17 |

Nintendo NEXUS
任天堂大辞典
Categories
TagCloud
Nlog Search
Nlog Archives
Meta
- Nintendo NEXUS Powered by WordPress -