jQuery的动画效果

显/示隐藏/切换动画:

  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        *{
            padding: 0;
            margin:0;
        }
        div{
            width: 500px;
            height: 500px;
            background-color: red;
            display: none;
        }
    </style>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        var flag = true;
        $(function(){
            // let flag = true; //内部使用let才好使。
            $('.box1').click(function(){
                $('div').show(2000);
            });
            $('.box2').click(function(){
                $('div').hide(2000);
            });
            $('.box3').click(function(){

                if(flag){
                    $('div').show(2000);
                    flag = false;
                }else{
                    $('div').hide(2000);
                    flag = true;
                }
            });
        })
    </script>
</head>
<body>
    
    <button class="box1">显示</button>
    <button class="box2">隐藏</button>
    <button class="box3">切换</button>
    <div></div>
</body>
</html>

 

开关式显示隐藏动画:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
            display: none;
        }
    </style>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            $('#btn').click(function(){
                $('div').toggle(2000,function(){
                    $(this).text('盒子出来了');
                    console.log($(this));
                    if($('#btn').text() =='隐藏'){
                        $('#btn').text('显示');
                    }else{
                        $('#btn').text('隐藏');
                    }
                })
            })
        })
    </script>
</head>
<body>
    <button id="btn">显示</button>
    <div></div>
</body>
</html>

滑入和滑出:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div{
            width: 200px;
            height: 200px;
            background-color: skyblue;
            display: none;
        }
    </style>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        var flag = true;
        $(function(){
            // let flag = true;
            $('.b1').click(function(){
                $('div').slideDown(2000,function(){
                    $(this).text('滑出来了')
                    flag = false;
                })
            })
            $('.b2').click(function() {
                $('div').slideUp(2000,function(){
                    $(this).text('');
                    flag = true;
                })
            });
            $('.b3').click(function(){
                if(flag){
                    $('div').slideDown(2000,function(){
                    $(this).text('滑出来了')
                    flag = false;
                })
                }else{
                    $('div').slideUp(2000,function(){
                    $(this).text('');
                    flag = true;
                })
                }                
            })
        })
    </script>
</head>
<body>
    <button class="b1">滑入</button>
    <button class="b2">滑出</button>
    <button class="b3">切换滑动</button>
    <div></div>
</body>
</html>

淡入淡出动画:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
            display: none;
        }
    </style>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            $('.b1').click(function(){
                if($(this).text() == '淡入'){
                    $('div').fadeIn(2000);
                    $(this).text('淡出');
                }else{
                    $('div').fadeOut(2000);
                    $(this).text('淡入');
                }
            });
            $('.b2').click(function(){
                $('div').fadeToggle(2000);
            })
        })
    </script>
</head>
<body>
    <button class="b1">淡入</button>
    <button class="b2">切换</button>
    <div></div>
</body>
</html>

通过改变透明度,切换匹配元素的显示或隐藏状态:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div{
            width: 300px;
            height: 300px;
            display: none;
            opacity:1;
            background-color: red;
        }
    </style>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            $('button:eq(0)').click(function(){
                $('div').fadeIn(2000);
            })
            $('button:eq(1)').click(function(){
                $('div').fadeOut(2000);
            });
            $('button:eq(2)').click(function(){
                $('div').fadeToggle(1000);
            })
            $('button:eq(3)').click(function(){
                $('div').fadeTo(1000,0.1,function(){
                    alert('更改透明度成功')
                })
            })
        })
    </script>
</head>
<body>
    <button>淡入</button>
    <button>淡出</button>
    <button>切换</button>
    <button>改透明度0.5</button>
    <div></div>
</body>
</html>

自定义动画:

 

$(selector).animate({params}, speed, callback);

 

作用:执行一组CSS属性的自定义动画。

  1,第一个参数表示:要执行动画的CSS属性(必选)。

  2,第二个参数表示:执行动画的时长。

  3,第三个参数表示:动画执行完毕后,立即执行的回调函数。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div{
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            $('button').click(function(){
                var json = {
                    'width':500,
                    'height':500,
                    'left':300,
                    'top':300,
                    'border-radius':100
                };
                var json2 = {
                    'width':100,
                    'height':100,
                    'left':100,
                    'top':100,
                    'border-radius':50
                };
                $('div').animate(json,1000,function(){
                    $('div').animate(json2,1000,function(){
                        alert("执行完毕!");
                    })
                })
            })
        })
    </script>
</head>
<body>
    <button>自定义动画</button>
    <div></div>
</body>
</html>

停止动画:

 

$(selector).stop(true, false);

 

第一个参数:

  true:后续动画不执行。

  false:后续动画会执行。

第二个参数:

  true:立即执行完成当前动画。

  false:立即停止当前动画。

参数如果都不写,默认两个都是false。

鼠标悬停时,弹出下拉菜单(下拉时带动画):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        *{
            padding: 0;
            margin:0;
        }
        ul{
            list-style: none;
        }
        .wrap{
            width: 330px;
            height: 30px;
            margin:100px auto 0;
            padding-left: 10px;
            background-color: pink;
        }

        .wrap li{
            background-color: green;
        }
        .wrap>ul>li{
            float: left;
            margin-right: 10px;
            position: relative;
        }

        .wrap a{
            /*display: none;*/
            height: 30px;
            width: 100px;
            text-decoration: none;
            color: black;
            line-height: 30px;
            text-align:center;
        }
        .wrap li ul{
            position:absolute;
            top:30px;
            display: none;
        }
    </style>
    <script type="text/javascript" src='../../jquery-3.3.1.js'></script>
    <script type="text/javascript">
        $(document).ready(function(){
            var jqli = $('.wrap>ul>li');
            jqli.mouseenter(function(){
                $(this).children('ul').stop().slideDown(1000);
            });
            jqli.mouseleave(function(){
                $(this).children('ul').stop().slideUp(1000);
            });
        });
    </script>
</head>
<body>
    <div class="wrap">
        <ul>
            <li><a href="javascript:;">一级菜单1</a>
                <ul>
                    <li><a href="javascript:;">一级菜单2</a></li>
                    <li><a href="javascript:;">一级菜单3</a></li>
                    <li><a href="javascript:;">一级菜单4</a></li>
                </ul>
            </li>
            <li><a href="">二级菜单1</a>
                <ul>
                    <li><a href="javascript:;"></a>二级菜单2</li>
                    <li><a href="javascript:;"></a>二级菜单3</li>
                    <li><a href="javascript:;"></a>二级菜单4</li>
                </ul>
            </li>
            <li><a href="">三级菜单1</a>
                <ul>
                    <li><a href="javascript:;">三级菜单2</a></li>
                    <li><a href="javascript:;">三级菜单3</a></li>
                    <li><a href="javascript:;">三级菜单4</a></li>
                </ul>
            </li>
        </ul>
    </div>
</body>
</html>

 

PS:

javascript:void(0); //跟javascript:;效果一样

上方代码中,关键的地方在于,用了stop函数,再执行动画前,先停掉之前的动画。

 

posted @ 2018-05-31 22:41  Qingqiu_Gu  阅读(144)  评论(0编辑  收藏  举报