jQuery学習の旅9アニメーション効果

84561 ワード

1、要素の表示と非表示
  • display:none; 非表示
  • display:block; 表示
  • 単純な表示と非表示方法
  • a)show()表示
  • b)hide()非表示
  • c)toggle()スイッチ、表示は非表示、非表示は
  • <script type="text/javascript"> function f1(){ //   $("div").hide();//display:none //document.getElementById('id').style.display="none"; } function f2(){ //   $("div").show();//display:block } function f3(){ $("div").toggle(); } </script>
    <style type="text/css"> div {width:300px; height:200px; background-color:blue;} </style>
     <body>
         <div>duck and dog</div>
          <input type="button" value="  " onclick="f1()" />
          <input type="button" value="  " onclick="f2()" />
          <input type="button" value="    " onclick="f3()" />
    </body>

    CSSでは、visibilityまたはdisplayスタイルを使用して、要素の表示と非表示を制御するときに効果は同じですが、結果は異なります.具体的な説明は以下の通りです.
  • visibilityプロパティは、エレメントを非表示にすると、ドキュメントフローにおけるエレメントの影響力を保存し、非表示になったエレメントの未知は変わらない.このプロパティにはvisible(デフォルト)とhiddenの2つの値が含まれます.
  • displayが非表示になった後、非表示の要素はドキュメントの場所を占有しなくなりました.

  • 2、スライド効果の表示と非表示
  • slideUp(speed[,callback])要素を上にスライドさせ、最終的に
  • を隠す.
  • slideDown(speed[,callback])要素を下にスライドさせ、最終的に
  • を表示する.
  • slideToggle(speed[,callback])
  • speed:効果を設定する速度(slow(600)normal(400)fast(200)時間(ミリ秒))
  • callback:効果実行後に自動的に呼び出されるコールバック関数
  • <script type="text/javascript"> function f1(){ //   $("div").slideUp(3000,function(){ alert('    ,     '); }); } function f2(){ //   $("div").slideDown(3000,function(){ alert('     '); });//display:block } function f3(){ $("div").slideToggle(1000); } $(function(){ //       //setInterval("f3()",1000); }); </script>
    
    <style type="text/css"> div {width:300px; height:200px; background-color:blue;} </style>
    
    
    <body>
         <div>duck and dog</div>
         <input type="button" value="  " onclick="f1()" />
         <input type="button" value="  " onclick="f2()" />
         <input type="button" value="    " onclick="f3()" />
     </body>

    3、フェードアウト効果
    要素を一定の透明度で変化させ、表示と非表示の効果を達成します.
  • fadeIn(speed, [callback])
  • fadeOut(speed, [callback])
  • fadeToggle(speed,[callback])スイッチング効果
  • fadeTo(speed,opacity,[callback])divを一定の透明度(0-1)0.3に設定すると30%透明度
  • になります.
    <script type="text/javascript"> function f1(){ //   $("div").fadeOut(4000); } function f2(){ //   $("div").fadeIn(4000); $("#two").fadeTo(2000,0.3); } function f3(){ $("div").fadeToggle(2000); } </script>
    <style type="text/css"> div {width:300px; height:200px; background-color:blue;} </style>
    <body>
        <div id = "two">duck and dog</div>
    
        <input type="button" value="  " onclick="f1()" />
        <input type="button" value="  " onclick="f2()" />
        <input type="button" value="    " onclick="f3()" />
    </body>

    透明度を設定します.divの透明度は30%です.
    4、アニメーション効果の下地方法animate()
    show()hide()などのアニメーション効果の内部でanimate()を実行する方法
    $().animate(css    [][]);

    css()などの一般的なjqueryメソッドが実行されると、現在のjqueryオブジェクトが返されるため、jqueryの多くのメソッドはチェーン呼び出し可能です.
     <script type="text/javascript"> function f1(){ //    、    、div        //font-size background-color color console.log($("div")); //jquery      css        jquery   //  css       return this    console.log($("div").css('font-weight','bold').css("background-color",'pink')); var jn = {'font-size':'30px',width:'400px',height:'300px'}; $("div").css('font-weight',"bold").css("background-color","pink").css("color","white").animate(jn,2000); //$("div").animate(jn,2000); } </script>
    
    <style type="text/css"> div {width:300px; height:200px; background-color:blue; } </style>
    
    <body>
        <div>duck and dog</div>
        <input type="button" value="  " onclick="f1()" />
    </body>

    5、累加累減アニメーション
    アニメーションがleft:500を一度に設定すると、最初にdivをクリックすると500ピクセル左に移動し、2回目のクリックでは動かなくなります.累積累積累積は連続的に動いており、left:"500 px"をleft:"+=500 px"またはleft:"-=500 px"に変更するだけでよい.
    (function(){  
        $("#panel").click(function(){  
           $(this).animate({left: "+=500px"}, 3000);  
        })  
    })</span> 

    6、マルチアニメーション
    1、複数のアニメーションを同時に実行する上の例ではleft属性の変化のみを制御していますが、今回はleft属性を制御するときに要素の高さを200 pxに同時に制御します
    $(function(){  
        $("#panel").click(function(){  
           $(this).animate({left: "500px",height:"200px"}, 3000);  
        })  
    })

    2、順次アニメーションを実行する
    上の例では、要素の右シフトと高さの拡大の2つのアニメーションが同時に行われます.右に移動して高さを拡大するのは簡単です.上のanimate()メソッドを2つに分解するだけでいいです.
    $(function(){  
        $("#panel").click(function(){  
           $(this).animate({left: "500px"},3000)  
                  .animate({height:"200px"},1000);  
        })  
    })  

    3、総合アニメーション
    次に、より複雑なアニメーションを作成します.div要素をクリックして右に移動しながら高さを大きくし、不透明度を50%から100%に切り替えます.次に上から下に移動させ、幅を大きくして、これらの効果が完了したら薄く隠すようにします.
    
    $(function(){  
        $("#panel").css("opacity",0.5);//       
        $("#panel").click(function(){  
           $(this).animate({left: "400px",height:"200px",opacity:"1"},3000)  
                  .animate({top:"200px",width:"200px"},3000)  
                  .fadeOut(1000);  
        })  
    }) 

    7、アニメーションコールバック関数
    前の例では、エレメントを非表示にするのではなく、最後のステップでcssスタイルを切り替えたい場合.これでanimateの3番目のパラメータコールバック関数を使用できます
    $(function(){  
        $("#panel").css("opacity",0.5);//       
        $("#panel").click(function(){  
           $(this).animate({left: "400px",height:"200px",opacity:"1"},3000)  
                  .animate({top:"200px",width:"200px"},3000,function(){$(this).css("border","5px solid blue")});  
    
        })  
    }) 

    これでcssメソッドをアニメーションキューに追加します.
    8、アニメーションを停止し、アニメーション状態かどうかを判断する
    1、要素のアニメーションを停止するstop([clearQueue][,gotoEnd])は両方ともオプションのパラメータで、booleanタイプのパラメータの説明です.
  • clearQueue:実行されていないアニメーションキュー
  • を空にするかどうかを表します.
  • gotoEnd:実行中のアニメーションを最後のステータス
  • にジャンプするかどうかを表します.
    stop()メソッドの2つのパラメータは、総合的な例で理解できます.
    
    <style type="text/css"> *{margin:0;padding:0;} body { font-size: 13px; line-height: 130%; padding: 60px } #panel { width: 60px; border: 1px solid #0050D0 ;height:22px;overflow:hidden;} .head { padding: 5px; background: #96E555; cursor: pointer;width: 300px;} .content { padding: 10px; text-indent: 2em; border-top: 1px solid #0050D0;display:block; width:280px;} </style>  
    <script src="../../../scripts/jquery.js" type="text/javascript"></script>  
    <script type="text/javascript"> $(function(){ $("button:eq(0)").click(function () { $("#panel") .animate({height : "150" } , 2000 ) .animate({width : "300" } , 2000 ) .hide(3000) .animate({height : "show" , width : "show" , opacity : "show" } , 2000 ) .animate({height : "500"} , 2000 ); }); $("button:eq(1)").click(function () { $("#panel").stop();//      ,         }); $("button:eq(2)").click(function () { $("#panel").stop(true);//           }); $("button:eq(3)").click(function () { $("#panel").stop(false,true);//             ,         }); $("button:eq(4)").click(function () { $("#panel").stop(true,true);//         ,              }); }) </script>  
    
    <body>  
        <button>       </button>  
        <button>stop()</button>  
        <button>stop(true)</button>  
        <button>stop(false,true)</button>  
        <button>stop(true,true)</button>  
        <div id="panel">  
            <h5 class="head">      </h5>  
            <div class="content">  
                      ,     ,           
            </div>  
        </div>  
    </body>  
    </html>

    2、要素がアニメーション状態かどうかを判断する
    animate()メソッドを使用する場合は、アニメーションの蓄積によるアニメーションとユーザの動作が一致しない現象を回避します.ユーザーがエレメント上でanimate()アニメーションをすばやく実行すると、アニメーションの蓄積が表示されます.
    解決策は、要素がアニメーション状態にあるかどうかを判断し、アニメーション状態にない場合に、要素に新しいアニメーションを追加することです.使用方法:
    if(!$(element).is(":animated")){  
        //       
    }