2012/12/06
jQueryプラグインを作ってみました
jQueryのプラグインを利用することはあっても、
自分でプラグインを作ったことはありませんでした。
いつかはやろうと思っていたんですが、時間が経ってしまい、
とりあえず作ることができました。
出来たといっても、今回は、プラグインの作り方を知るという形で作成したので、
中身には簡単ものです。
これから機能を増やしていこうかなと思っています。
デモを作成したので、
ご覧ください。
miniSliderというフェードイン・アウトのスライドショーです。
オプションは、まだほとんどありません。
・スライドのアニメーションのスピード
・スライドの時間
・前へ、次へボタンの設置
のみです(笑)
以下jqueryのソースです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | (function($){ $.fn.miniSlider = function(options){ //オプション options = $.extend({ delay: 4000, slideSpeed: 1000, nextSelector: null, prevSelector: null, }, options); var elm = this; var currentItem = 0; var totalItem = elm.length; var animateFlag = false; var tmd; elm.css({"position":"absolute","top":"0","left":"0","z-index":"1"}) elm.eq(currentItem).css("z-index","3"); function intAnimation(){ slideAnimate(getNextItem(currentItem)); }; //スライドアニメーションの動き function slideAnimate(nextItem){ animateFlag = true; elm.eq(nextItem).css("z-index","2"); elm.eq(currentItem).css("z-index","3").fadeTo(options.slideSpeed,0,function(){ $(this).css("z-index","1"); $(this).fadeTo(0,100); animateFlag = false; tmd = setTimeout(intAnimation,options.delay); }); currentItem = nextItem; } //次のスライドを取得 function getNextItem(current){ var next; if(current + 1 >= totalItem ){ next = 0; }else{ next = current + 1; } return next; } //前のスライドを取得 function getPrevItem(current){ var prev; if(current - 1 < 0 ){ prev = totalItem - 1; }else{ prev = current - 1; } return prev; } //次へボタンを押した時 if(options.nextSelector != ""){ $(options.nextSelector).click(function(){ if(!animateFlag){ clearTimeout(tmd); slideAnimate(getNextItem(currentItem)); } }); } //前へボタンを押した時 if(options.prevSelector != ""){ $(options.prevSelector).click(function(){ if(!animateFlag){ clearTimeout(tmd); slideAnimate(getPrevItem(currentItem)); } }); } tmd = setTimeout(intAnimation,options.delay); return this; }; })(jQuery); |
miniSliderの使い方
一応使い方を書いておきます。
内にjqueryと、このjsファイルを読み込みます。
1 2 | <script src="js/jquery.min.js"></script> <script src="js/jquery.minislider.js"></script> |
そして、以下の記述をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <script> $(function() { $(".slider li").miniSlider(); //オプションを設定した場合 $(".slider li").miniSlider({ delay: 5000, slideSpeed: 1000, nextSelector: ".next", prevSelector: ".prev" }); }); </script> |
HTMLは、
1 2 3 4 5 6 | <ul class="slider"> <li><img src="sample1.jpg"></li> <li><img src="sample2.jpg"></li> <li><img src="sample3.jpg"></li> <li><img src="sample4.jpg"></li> </ul> |
cssについては、各々でお願いします。
ちなみに、対応ブラウザについては特に確認をしておりませんので、あしからず。
もっと機能を増やして、ちゃんとしたものを作りたいと思います。
Author Profile
スターフィールド編集部
SHARE