《锋利的JQuery》中的动画效果:

 说实话,虽然这本书已经很老了,老到什么程度呢,这本书以JQuery1.9以前的版本写就的,toggle()方法的(func1,func2,...)这个切换事件的功能已经被删去了

但是这本书还是挺8错的,我读的很快落~

其中的动画方法并没有全部写一遍,因为我是懒🐶

自己尝试写几个替代toggle()的办法时还遇到了一些问题,在思否上得到了很详尽的解答,链接~

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="jquery-3.3.1.min.js"></script>
    <style>
        div:nth-of-type(1){
            width: 200px;
            height: 200px;
            background-color: aqua;
        }
        div:nth-of-type(2){
            width: 200px;
            height: 200px;
            background-color: tomato;
            /* margin-left: 200px; */
            
        }
        div:nth-of-type(3){
            width: 200px;
            height: 200px;
            background-color: darkgreen;
        }
        div:nth-of-type(4){
            width: 200px;
            height: 200px;
            background-color: deepskyblue;
            margin-top: 20px;
            position: absolute;
        }
        div:nth-of-type(5){
            width: 200px;
            height: 200px;
            background-color: hotpink;
            margin-top: 20px;
            position: absolute;
            top:900px;
        }
        button{
            position: relative;
            display: block;
            left: 70px;
        }
    </style>
</head>
<body>
    <div id="show-box"></div>
    <button id="btn1">按钮1</button>
    <div id="fade-box" data-display = "0"></div>
    <button id="btn2">按钮2</button>
    <div id="slide-box"></div>
    <div id="animate-box1"></div>
    <div id="animate-box2"></div>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script>
        $(function(){
            $("#btn1").click(function(){
                if($("#show-box").is(":hidden")){//is(":hidden")
                    $("#show-box").show(300);
                }else{
                    $("#show-box").hide(300);
                }
            });
            $("#btn2").click(function(){
                if($("#fade-box").data("display") == 0){
                    $("#fade-box").fadeOut(300);
                    $("#fade-box").data("display","1");
                }else if($("#fade-box").data("display") == 1){
                    $("#fade-box").fadeIn(300);
                    $("#fade-box").data("display","0");
                }
            });
            $("#slide-box").hover(function(){
                $(this).slideUp(500);
            },function(){
                $(this).slideDown(500);
            });
            //animate(param,speed,callback)
            $("#animate-box1").click(function(){
                $(this).animate({height:"50px",width:"50px",left:"300px"},5000)
                       .animate({height:"200px",width:"200px",left:"8px"},5000,function(){
                           alert("动画已结束~");
                       });//height:-=10px
            });
            //stop(clearQuene,gooEnd):stop(true),清除该元素接下来的所有动画队列,在下面这个例子中,如果使用的是无任何参数的stop,则
            //如果在执行注释1处的动画时触发了鼠标移出事件,则将会继续执行的是注释2处的动画,因为注释3处的stop停止的是注释1处的动画效果
            //gotoEnd,让正在执行的动画直接到达结束时的状态,注意不是直接到达动画队列的末状态
            $("#animate-box2").hover(function(){
                $(this).stop(true)
                       .animate({height:"400px",width:"400px;"},500)//1
                       .animate({height:"50px",width:"50px"},5000)//2
            },function(){
                $(this).stop(true)//3
                       .animate({left:"300px"},5000)
                       .animate({opacity:"0.5"},5000)
            })
        })
        //其他动画方法:is(":animated"),判断元素当前是否处于动画中
        //delay(2000),延迟2s后再进行下一个动画
        //fadeTo(600,0.2),在0.6秒内调整不透明度至0.2
        //slideToggle()、fadeToggle(),切换可见性,前者通过高度,后者通过不透明度
    </script>
</body>
</html>

 

posted @ 2019-03-25 15:10  林不渡  阅读(141)  评论(0编辑  收藏  举报