The current article
スライダーの上に、扉が開く動作(animate)を付けるjQuery
クロスフェードのスライダー上に、扉が開く動きを付けるjQueryです。
オンマウスやクリックで開くタイプではなく、読み込めば開くタイプです。
コードはとても簡単・シンプルですので、使える部分があれば参考にしてみてください。
capture
参照サイト-スライド:最も短いコードで実装出来るイメージスライドショー
参照サイト-アニメーション:Crafting an Animated
上記の参照サイトを参考にさせていただききました。
良記事ありがとうございます!
DEMO
デモページ DEMO
デモページを例に説明していきます。
また、スライダー部分についての説明は省略ぎみです。
この記事のHTML・CSS・JSをコピペすれば動くと思いますが、詳しくは参照サイトの「スライド」をご覧ください。
記述例:HTML
<html> <head> ・ ・ <link href="style.css" type="text/css" rel="stylesheet" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js" type="text/javascript"></script> <script src="js/animate.js" type="text/javascript"></script> ・ ・ </head> <body> ・ ・ <div class="slidewrap"> <div class="cover"><img src="img/cover.png" alt=""></div> <div class="left-pos"><img src="img/slide_left.png"></div> <div class="right-pos"><img src="img/slide_right.png"></div> <div class="slide"> <div class="in"> <img src="img/slide01.jpg"> <img src="img/slide02.jpg"> <img src="img/slide03.jpg"> </div> </div> </div> ・ ・ </body> </html>
5行目で、CSS(後述)
6行目で、jQuery本体
7行目で、実行JSを読み込み(後述)
16行目、丸抜きの画像部分なので、不必要なら削除OK
17行目、左扉画像
18行目、右扉画像
19行目以降スライダー部分
21~23行目、スライダー画像
CSS(style.css)
.slidewrap{ position:relative; margin:0 auto 30px; width:960px; height:450px; overflow:hidden; } .cover { position:absolute; top:0; left: 0; z-index:100;} .left-pos{ position:absolute; top:0; left: 260px; z-index:50; } .right-pos{ position:absolute; top:0; left: 480px; z-index:50; } .slide { position:absolute; top:0; left:0;} .slide .in { position:relative; width:960px; } .slide .in img { position:absolute; left:0; top:0; }
1行目、「.slidewrap」の「position:relative」と「overflow:hidden」は必ず指定
後で述べる「JS」の基準も、このボックスの左上
2行目、カバー画像を付ける場合に記述、「z-index:100;」で重なりを上層に
3行目、左扉の開始位置と重なりを指定
4行目、右扉の開始位置と重なりを指定
両扉は「z-index:50;」で、スライダーとカバー画像の間に配置
5行目以降スライダー部分
JS(animate.js)
$(window).load(function() { setTimeout(function() { $(".left-pos").animate({left: '-220px' }, {queue:false,duration:2000}); $(".right-pos").animate({left: '960px' }, {queue:false,duration:2000}); },1000); //扉部分 $('.in img:gt(0)').hide(); setInterval(function() { $('.in :first-child').fadeOut(1000).next('img').fadeIn(1000).end().appendTo('.in'); }, 4000); //スライダー部分 });
1行目は、全て読み込んでから動作開始
2行目(と5行目)で、読み込んで1秒後に動作開始と指示
3行目、「left-pos」というクラスの付いたボックスを、基準から「left: ‘-220px’」の場所まで「duration:2000」2秒かけて移動
4行目、「right-pos」というクラスの付いたボックスを、基準から「left: ‘960px’」の場所まで「duration:2000」2秒かけて移動
「queue:false」とあるのは、同時にアニメーションさせるため
7行目、最初の画像以外を非表示
8行目(と10行目)、1回のフェードイン・アウトのインターバル(10行目に秒数を入れる)
9行目、フェードインとアウトを繰り返し、
「fadeOut」と「fadeIn」のカッコ内はフェードを何秒かけるか
となります。
DEMOページには別バージョンも置いてみました。
気になる所があれば、ソースをご覧いただければと思います。
少し変更すれば、1枚扉やシャッターのような上下の動きにも出来ますし、
スライダー部分は他のスライダーに差し替えても大丈夫と思います・・・
参考になれば良いのですが、適宜ご自分でカスタマイズしてください!
(動いてますが、コード間違っていたらすみません)
以上、「スライダーの上に、扉が開く動作(animate)を付けるjQuery」でした。