デモ:スライドショー付きタブ(履歴と同時設定)

jQuery toolsによる「スライドショー付きタブ(履歴と同時設定)」の動作デモです。

First pane

Second pane

Third pane

サンプルコード

HTMLのサンプル

<ul class="slidetabs">
	<li><a href="#tab1" class="tab1"><span class="label">1</span></a></li>
	<li><a href="#tab2" class="tab2"><span class="label">2</span></a></li>
	<li><a href="#tab3" class="tab3"><span class="label">3</span></a></li>
</ul>

<div class="panes">
	<div class="item pane1">
		<h3 class="line">First pane</h3>
	</div>
	<div class="item pane2">
		<h3 class="line">Second pane</h3>
	</div>
	<div class="item pane3">
		<h3 class="line">Third pane</h3>
	</div>
</div>

<div class="control">
	<a class="backward">prev</a>
	<a class="forward">next</a>
</div>

<div class="btnArea">	
	<button onClick=$(".slidetabs").data("slideshow").play();>1秒間隔で再生</button>
	<button onClick=$(".slidetabs").data("slideshow").stop();>停止</button>
</div>

CSSのサンプル

/* パネルを囲う要素 */
#example .panes {
	position:relative;	
	width:400px;
	height:240px;
	margin-bottom: 10px;
	cursor:pointer;
}

/* パネル */
#example .item {
	position: absolute;
	border: solid 3px #ccc;
	display:none;
	height:240px;
	width:400px;
	border-radius:5px;
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
	-ms-border-radius: 10px;
}
#example .pane1{
	background: url(http://nekodama.sakura.ne.jp/images/webdev/jquerytools/tabSet/pic_cat1_org.jpg) no-repeat;
}
#example .pane2{
	background: url(http://nekodama.sakura.ne.jp/images/webdev/jquerytools/tabSet/pic_cat2_org.jpg) no-repeat;
}
#example .pane3{
	background: url(http://nekodama.sakura.ne.jp/images/webdev/jquerytools/tabSet/pic_cat3_org.jpg) no-repeat;
}
/* パネル内のライン */
#example .panes .line {
	display:block;
	background: #333;
	opacity: 0.8;
	color: #fff;
	margin-top: 10px;
	padding: 2px 5px;
}

/* タブを囲う要素 */
#example .slidetabs{
	width:100%;
	overflow:hidden;
}
/* タブ */
#example .slidetabs li{
	float:left;
	width: 100px;
	height: 30px;
	margin-left: 10px;
}
#example .slidetabs li a{
	display: block;
	width: 100px;
	height: 30px;
	margin-top: 10px;
	border-top: solid 3px #ccc;
	border-left: solid 3px #ccc;
	border-right: solid 3px #ccc;
	border-radius-topleft: 10px;
	border-radius-topright: 10px;
	-moz-border-radius-topleft: 10px;
	-moz-border-radius-topright: 10px;
	-webkit-border-radius-topleft: 10px;
	-webkit-border-radius-topright: 10px;
	-ms-border-radius-topleft: 10px;
	-ms-border-radius-topright: 10px;
}
#example .slidetabs .label{
	background: #333;
	opacity: 0.8;
	color: #fff;
	margin-top: 10px;
	padding: 2px 5px;
}
#example .slidetabs .tab1{
	background: url(http://nekodama.sakura.ne.jp/images/webdev/jquerytools/tabSet/pic_cat1_thumb.jpg) no-repeat;
}
#example .slidetabs .tab2{
	background: url(http://nekodama.sakura.ne.jp/images/webdev/jquerytools/tabSet/pic_cat2_thumb.jpg) no-repeat;
}
#example .slidetabs .tab3{
	background: url(http://nekodama.sakura.ne.jp/images/webdev/jquerytools/tabSet/pic_cat3_thumb.jpg) no-repeat;
}
#example .slidetabs .current{
	margin-top: 0;
	height: 40px;
	border-color: orange;
}	

/* 前/次へボタン */
#example .control{
	clear:both;
	width:394px;
	overflow: hidden;
	margin-bottom: 5px;
	padding: 5px;
	border:solid 1px #eee;
}
#example .forward, .backward {
	display:block;
	float: left;
	height: 16px;
	line-height: 16px;
	width: 60px;
	background: url(http://nekodama.sakura.ne.jp/images/webdev/jquerytools/tool/ic_arrow.png) 0 0 no-repeat;	
	cursor:pointer;
}

/* 次へ */
#example .forward 					{	padding-right: 16px; background-position: -476px 0;}
#example .forward:hover 		{ background-position: -476px -100px; }
#example .forward:active 	 	{ background-position: -476px -200px; } 

/* 前へ */
#example .backward 					{	padding-left: 16px; background-position: 0 0;}
#example .backward:hover  	{ background-position: 0 -100px; }
#example .backward:active  	{ background-position: 0 -200px; }

/* 再生/停止ボタン */
#example .btnArea{
	clear:both;
	width:394px;
	overflow: hidden;
	margin-bottom: 5px;
	padding: 5px;
	border:solid 1px #eee;
}

/* タブが存在しない時に使用 */
#example .disabled {
	visibility:hidden !important;		
}

Javascriptのサンプル

$(function() {
	// フルオプションの例
	$(".slidetabs").tabs(".panes > div", {
		tabs: "a",                  // タブ自身の要素名
		current: "current",         // 現在アクティブなクラスのクラス名
		onBeforeClick: function(event,i){ // クリックイベントが起きる前に実行する関数
			// alert(i+"番目のタブへ移動します");
		},
		onClick: function(event,i){ // クリックイベントが起きた後に実行する関数
			// alert(i+"番目のタブへ移動しまた");
		},
		effect: "fade",             // エフェクト
		initialIndex: 0,            // 最初に表示されるタブ
		event: "click",             // タブに対してのイベント種類
		rotate: true,               // 最初のタブまでローテションしたら最初のタブに戻る
		fadeInSpeed: "slow",        // フェードイン速度
		fadeOutSpeed: "slow",       // フェードアウト速度
		history: true               // ブラウザの戻る/進むボタンで戻れるようにする。ロケーションを変更するので、タブに#hogeの指定が必要
	}).slideshow({
		// スライドショープラグインの追加
		next: ".forward",           // 前ボタンのクラス名
		prev: ".backward",          // 次ボタンのクラス名
		disabledClass: "disabled",  // 無効化した時のクラス名
		autoplay: false,            // 自動再生の初期値
		autopause: true,            // ロールオーバーで自動再生を停止するか
		interval: 1000,             // 自動再生速度(ミリ秒)
		clickable: false,           // パネル自身をクリック可能にするか
		api: false
	});
});