第3回 CSSとクリックの応用 – jQueryによるJavaScript入門

こんばんわ。to-Rの西畑です。

3回目は今まで解説したCSSの操作クリックの制御の応用として実践的なUIを作ってみたいと思います。

まずはサンプルをご覧ください。

タブパネルのUIになります。

最近はYahoo!やLivedoorなどの大手ポータルサイトでも採用され、すっかり一般的なUIになっています。

クリックしたらCSSを変更を利用すれば、タブパネルを簡単に作成することが可能です。

まずはHTMLの解説。

タブ部分はclass=”tab”をつけたリスト、パネル部分はclass=”panel”をつけたリストで記述しています。

li要素にはそれぞれtab_a~tab_bというclass名を、初期選択状態にしておきたいものにselectedというclass名を付けます。

<ul class="tab">
	<li class="tab_a selected">トピックス</li>
	<li class="tab_b">経済</li>
	<li class="tab_c">エンタメ</li>
	<li class="tab_d">スポーツ</li>
	<li class="tab_e">その他</li>
</ul>
<ul class="panel">
	<li class="tab_a selected">
		トピックのニュース<br />
		トピックのニュース<br />
		トピックのニュース<br />
		トピックのニュース<br />
		トピックのニュース<br />
	</li>
	<li class="tab_b">
		経済のニュース<br />
		経済のニュース<br />
		経済のニュース<br />
		経済のニュース<br />
		経済のニュース<br />
	</li>
	<li class="tab_c">
		エンタメのニュース<br />
		エンタメのニュース<br />
		エンタメのニュース<br />
		エンタメのニュース<br />
		エンタメのニュース<br />
	</li>
	<li class="tab_d">
		スポーツのニュース<br />
		スポーツのニュース<br />
		スポーツのニュース<br />
		スポーツのニュース<br />
		スポーツのニュース<br />
	</li>
	<li class="tab_e">
		その他のニュース<br />
		その他のニュース<br />
		その他のニュース<br />
		その他のニュース<br />
		その他のニュース<br />
	</li>
</ul>

CSS部分は難しいかもしれませんが、サンプルを開いた際に表示されるCSSを設定します。

*{
	margin:0;
	padding:0;
	list-style-type:none;
}
#container{
	margin:10px auto;
	width:500px;
}
.tab li{
	float:left;
	padding:4px 10px;
	cursor:pointer;
	background:#DDDDDD;
	border:1px solid #999999;
	margin-right:1px;
	position:relative;
	top:1px;
}
.tab li.selected{
	border-bottom:1px solid #EEEEEE;
	background:#EEEEEE;
}
.panel li{
	display:none;
	clear:both;
	background:#EEEEEE;
	border:1px solid #999999;
	padding:10px;
}
.panel li.selected{
	display:block;
}

jQuery部分の解説です。

$(function(){
 
});

まずはお約束の$(function(){ });を記述し、その中にjQueryを書いていきます。

まずはtab_aをクリックした際の動作について考えてみます。

現在選択されているタブのCSSを打ち消す為、CSSでselectedクラスのスタイルを打ち消すように上書きをします。

この処理はtab_a以外のtabがクリックされた際も行わなくてはいけないので、clickイベントはすべてのタブ(“.tab li”)に付けておきます。

$(".tab li").click(function(){
	$(".tab li").css("border","1px solid #999999");
	$(".tab li").css("background","#DDDDDD");
	$(".panel li").css("display","none");
})

tab_aのタブに選択状態のCSSを適応させ、パネル部分を表示するようにします。

$(".tab li.tab_a").click(function(){
	$(".tab li.tab_a").css("border-bottom","1px solid #EEEEEE");
	$(".tab li.tab_a").css("background","#EEEEEE");
	$(".panel li.tab_a").css("display","block");
});

これでtab_aがクリックされた際のクリックイベントは終了です。
次にb~aのタブまで同様の処理を行えばタブパネルの完成です。

よく利用するCSS

JavaScriptなどでUI設計を行う際によく利用するCSSとしてdisplayプロパティがあります。
display:blockとnoneを切り変えダイナミックな動きをサイトに与えます。

また、cursor:pointer;などもよく利用します。
ただの要素にクリックイベントを付ける為、マウスーオーバーしても変化がありません。
そこでマウスを乗せた際にポインタを変える事により、クリックできることをユーザーに伝える為です。

jQueryによるJavaScript入門

他のライブラリでタブパネルを利用する場合
【Adobe Spry TIPS 】タブパネル

【PR】書籍 現場のプロから学ぶXHTML+CSS 好評発売中

コメント / トラックバック 2 件

この記事へのコメント・トラックバックを追いかけることができます。(RSS 2.0

  1. さいきゆみ より:

    今回、とても興味深く読んでおります。いつもお世話になっております。
    これからは、なんでもjqueryにしてみたいと思うようになり、
    このスクリプトがおもしろいと思って、リファレンスを読みながらいじっていますが、10分で壁にぶちあたりました。 
    http://www.xn--gmqw9tw0b263au6jpzg.com/index.php で使っているメニューを書いてみようと思って、これが参考になると思い、click したら表示されるのではなく、hovor で表示されるようにしようと思いました。
    しかし、単純にclick を hover にしても表示されません。 私には、表示されないのはおかしい!と思えてしまいます。

    cssをいじってみてもうまくいかないのですが、どのように解釈したらいいのでしょうか?
    簡単でかまいませんので教えていただけるとありがたいです。

コメントをどうぞ

トラックバック URL

トラックバック

  1. […] jQueryの勉強をしている最中に知ったこの方法。 何かと使えそうです。 […]