jQueryを使ったシンプルなスライドショーを作成した。色々な場面で利用できるように汎用性を持たせた。
»Making a Slideshow with jQuery
2009.08.26 外部画像(jpg)読み込み対応版リリース
<script type="text/javascript" src="jquery-1.3.min.js"></script> <script type="text/javascript" src="slideshow.js" charset="utf-8"></script>
<div id="tmpSlide-1" class="tmpSlide temSlideActive">
<img src="slide1.jpg" alt="Slide">
</div>
<div id="tmpSlide-2" class="tmpSlide">
<img src="slide2.jpg" alt="Slide">
</div>
<div id="tmpSlide-3" class="tmpSlide">
<img src="slide3.jpg" alt="Slide">
</div>
<div id="tmpSlide-4" class="tmpSlide">
<img src="slide4.jpg" alt="Slide">
</div>
<div id="tmpSlide-5" class="tmpSlide">
<img src="slide5.jpg" alt="Slide">
</div>
<div id="tmpSlide-6" class="tmpSlide">
<img src="slide6.jpg" alt="Slide">
</div>
<ul id="tmpSlideshowControls">
<li class="tmpSlideshowControl" id="tmpSlideshowControl-1">»1</li>
<li class="tmpSlideshowControl" id="tmpSlideshowControl-2">»2</li>
<li class="tmpSlideshowControl" id="tmpSlideshowControl-3">»3</li>
<li class="tmpSlideshowControl" id="tmpSlideshowControl-4">»4</li>
<li class="tmpSlideshowControl" id="tmpSlideshowControl-5">»5</li>
<li class="tmpSlideshowControl" id="tmpSlideshowControl-6">»6</li>
</ul>
var $$ = $.fn; /* $はJQueryオブジェクト */
$$.extend({ /* extend()はプロトタイプへ追加 */
SplitID : function()
{
return this.attr('id').split('-').pop();
},
Slideshow : {
Ready : function()
{
// hoverイベント パラメータは2つ。
// 第一引数 - マウスオーバーで呼び出される関数
// 第二引数 - マウスアウトで呼び出される関数
$('li.tmpSlideshowControl').hover(
function() {
$(this).addClass('tmpSlideshowControlOn');
},
function() {
$(this).removeClass('tmpSlideshowControlOn');
}
)
// clickイベント
$('li.tmpSlideshowControl').click(
function() {
$('div.tmpSlide').stop(); /* 表示 -アニメーション-を利用時に必要 */
$('div.tmpSlide').hide();
$('li.tmpSlideshowControl').removeClass('tmpSlideshowControlActive');
// スライド操作
var elem = $('div#tmpSlide-' + $(this).SplitID());
// 表示 -通常-
elem.show();
// 表示 -フェードイン1- 初期不透明度0 -> 100% (例 1000ミリ秒で不透明度100%)
//elem.fadeIn(500);
// 表示 -フェードイン2- 初期不透明度 任意 -> 任意 (例 30%から1000ミリ秒で80%)
/*elem.css({"opacity": "0.3"})
elem.show();
elem.fadeTo(1000,0.8);*/
// 表示 -アニメーション-
elem.css({"width": "20px", "opacity": "0.1"});
elem.animate(
{width: "100%", opacity: "1.0"},
{duration: "slow"}
);
$(this).addClass('tmpSlideshowControlActive');
}
);
}
}
});
$(function()
{
$$.Slideshow.Ready();
});
* 画像表示の初期状態はアニメーション。表示したいタイプのコメントをはずすことにより他の表示タイプを選択できる。
* $はJQueryオブジェクト。
*jQuery.fn.extend(object) – jQueryエレメントに独自の新しいメソッドを追加する。(典型的なjQueryプラグインの作成方法) –jQuery.fn.extend(object) – jQuery 1.3.2 日本語リファレンス-
*参考サイト; »jQuery.extendとjQuery.fn.extendの違い – JavaScriptとかPerlとかPHPとかさくらとか勉強する
<script type="text/javascript" src="jquery-1.3.min.js"></script>
<script type="text/javascript" src="slideshow.js" charset="utf-8"></script>
<div style="width: 384px; height: 288px; border: 1px solid #CCCCCC;" id="slideshowContainer-1"><!-- 画像表示域 --></div>
<ul id="slideshowControls-1" class="slideshowControls">
<li class="slideshowControl" id="slideshowControl-1">»1</li>
<li class="slideshowControl" id="slideshowControl-2">»2</li>
<li class="slideshowControl" id="slideshowControl-3">»3</li>
<li class="slideshowControl" id="slideshowControl-4">»4</li>
<li class="slideshowControl" id="slideshowControl-5">»5</li>
<li class="slideshowControl" id="slideshowControl-6">»6</li>
</ul>
<div style="width: 384px; height: 288px; border: 1px solid #CCCCCC;" id="slideshowContainer-2"><!-- 画像表示域 --></div>
<ul id="slideshowControls-2" class="slideshowControls">
<li class="slideshowControl" id="slideshowControl-7">»7</li>
<li class="slideshowControl" id="slideshowControl-8">»8</li>
<li class="slideshowControl" id="slideshowControl-9">»9</li>
<li class="slideshowControl" id="slideshowControl-10">»10</li>
<li class="slideshowControl" id="slideshowControl-11">»11</li>
<li class="slideshowControl" id="slideshowControl-12">»12</li>
</ul>
var $$ = $.fn; /* $はJQueryオブジェクト */
$$.extend({ /* extend()はプロトタイプへ追加 */
SplitID : function()
{
return this.attr('id').split('-').pop();
},
Slideshow : {
Ready : function()
{
// hoverイベント パラメータは2つ。
// 第一引数 - マウスオーバーで呼び出される関数
// 第二引数 - マウスアウトで呼び出される関数
$('li.slideshowControl').hover(
function() {
$(this).addClass('slideshowControlOn');
},
function() {
$(this).removeClass('slideshowControlOn');
}
)
// clickイベント
$('li.slideshowControl').click(
function() {
// コンテナ番号(#slideshowContainer-N)
var slideshowContainerNo = $(this).parent('ul.slideshowControls').SplitID();
var slideshowContainer = 'div#slideshowContainer-'+slideshowContainerNo
// 画像オブジェクト
var imgElem = new Image();
// srcの設定
imgElem.src = 'slide' + $(this).SplitID() + '.jpg';
// 画像オブジェクトの非表示(display:none)
$(imgElem).hide();
$(slideshowContainer + ' > img').remove();
// 画像オブジェクト追加
$(slideshowContainer).append(imgElem);
$('li.slideshowControl').removeClass('slideshowControlActive');
// スライド操作
var elem = $(slideshowContainer + ' > img');
// 表示 -通常-
//elem.show();
// 表示 -フェードイン1- 初期不透明度0 -> 100% (例 1000ミリ秒で不透明度100%)
elem.fadeIn(1000);
// 表示 -フェードイン2- 初期不透明度 任意 -> 任意 (例 30%から1000ミリ秒で80%)
/*elem.css({"opacity": "0.3"})
elem.show();
elem.fadeTo(1000,0.8);*/
// 表示 -アニメーション-
/*elem.css({"width": "20px", "opacity": "0.1"});
elem.animate(
{width: "100%", opacity: "1.0"},
{duration: "slow"}
);*/
$(this).addClass('slideshowControlActive');
}
);
}
}
});
$(function()
{
$$.Slideshow.Ready();
});
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。