JavaScript
JavaScriptでコンテンツ切り替えその32015/11/18
JavaScriptでコンテンツ切り替えその2を改良してみた。
表示切替の基本の仕組みは同じ。
HTML、CSSに変更点はなし。
■表示の切り替えをアニメーション化
animateを使ってアニメーションを実装。
■ボタンの連打を抑制
変数changingで状態を管理することで連打を抑制。
■with文を使ってスクリプトを少し簡略化
$("#cont > div")を省略している。
※要jQuery
【動作確認】
1つ目のコンテンツ
p1p1p1p1p1p1p1
2つ目のコンテンツ
p2p2p2p2p2p2p2p2
3つ目のコンテンツ
p3p3p3p3p3p3p3p3
<div id="cont">
  <div>
    <p>1つ目のコンテンツ</p>
    <p>p1p1p1p1p1p1p1</p>
  </div>
  <div>
    <p>2つ目のコンテンツ</p>
    <p>p2p2p2p2p2p2p2p2</p>
  </div>
  <div>
    <p>3つ目のコンテンツ</p>
    <p>p3p3p3p3p3p3p3p3</p>
  </div>
</div>
<br>
<input type="button" value="切り替え" id="changeButton" />					hide.css
					hide.css
.hide {
  display : none;
}
					change.js
					$(function(){
  $("#changeButton").click(
    (function(){
      var nextCont = 0;
      var changing = false;
      
      with($("#cont > div")){
        addClass("hide");
        eq(nextCont).removeClass("hide");
        
        return function(){
          if(!changing){
            changing = true;
            
            eq(nextCont).animate(
              {  opacity : 'hide'},
              {  duration : 1000,
                easing : 'swing',
                complete : function(){
                  nextCont++;
                  if(nextCont >= length)
                    nextCont = 0;
                  eq(nextCont).animate(
                    {  opacity : 'show'},
                    {  duration : 1000,
                      easing : 'swing',
                      complete : function(){
                        changing = false;
                      }
                    }
                  );
                }
              }
            );
          }
        }
      }
    })()
  );
});