Go to comments

jQuery动画

一、基本特效

.hide() 展示

.show() 隐藏

.toggle() 切换显示/隐藏

1、显示隐藏

鼠标移入p标签ul标签显示,鼠标移出整体的div标签ul隐藏

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<style>
    .demo{
        width: 200px;
        cursor: pointer;
        border: 1px solid #ccc;
    }
    ul{
        display: none;
    }
</style>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<title>动画</title>
</head>
<body>

    <div class="demo">
        <p>Rose</p>
        <ul>
            <li>国泰民安</li>
            <li>风调雨顺</li>
            <li>五谷丰登</li>
        </ul>
    </div>

    <script>
    
    // 鼠标移入p标签,ul标签显示
    $('p').on('mouseenter', function(){

        $(this).next().show();

    });
    
    // 鼠标移出整体的div标签,ul再隐藏,所以mouseleave事件要绑定在.demo标签上
    $('.demo').on('mouseleave', function(){

        $(this).children('ul').hide();

    });
    
    </script>
</body>
</html>

2、深入一个点

ul元素调用完.hide()以后,状态一定是display:none,

但是从display:none状态,调用show()还原成什么状态是有点讲究的


第一种情况

元素一开始手动设置的是dispaly:none的状态,然后show()显示后会还原成默认值


什么是默认值?

ul默认值是display:block

input默认值是display:inline-block


默认值是什么show()就还原成什么


第二种情况

div元素第一开始设置的是dispaly:inline-block,

通过hide()变成了display:none,

然后在show()就不会变成默认的,会变成设置的dispaly:inline-block


成哥总结:

有设置的就按照我们设置的,没设置就还原成默认的,


陈思彤老师总结:

无论是设置的还是默认的,最后还原是按照,最后一次呈现出的状态

3、运行动画的过程

$('p').on('mouseenter', function(){

    $(this).next().show(3000);

});

      
$('.demo').on('mouseleave', function(){

    $(this).children('ul').hide(3000);

});


隐藏到显示的过程中,width、height、opacity、padding、margin(如果有padding、margin)它们一起从0到还原到展示的样子,

隐藏也是一样,width、height、opacity、padding、margin 一起往下减到0以后,设置成display:none

4、参数

null或(duration, easing, callblack)


duration:

执行过程的毫秒数。单词的意思是区间、延迟,持续时间的意思,

预设值有三个:normal(默认值,400毫秒),slow缓慢,fast快速


easing:

以什么样的方式动画

swing 开头慢、中间快、结尾慢(默认) 

linear 水平匀速,线性变速的意思


callblack:

回调函数,动画结束后执行


第一个参数是过渡毫秒数,第二个参以什么样的方式过度(变化的线性函数)

$('p').on('mouseenter', function(){
	$(this).next().show(1000, 'swing');
});


$('.demo').on('mouseleave', function(){
    $(this).children('ul').hide(1000, 'linear');
});

公司里一般很少使用show、hide这些参数,

即使需要用js + css3,动画既好看效率更高一些

5、.toggle()

需求是,点击显示,再点击隐藏

$('p').on('click', function(){

    if($(this).next().css('display') == 'none'){
        $(this).next().show();
    }else{
        $(this).next().hide();
    }

});


这样的需求可以用toggle(),传参数跟上面是一模一样的

$('p').click(function () {

    $(this).next().toggle();

});

toggle方法里面封装了奇偶数的判断功能

二、渐变

.fadeln() 淡入

.fadeOut() 淡出

.fadeTo()

.fadeToggle()

1、渐入渐出

淡入是透明度opacity属性值 0 ~ 1 的变化,淡出从 1 ~ 0

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
    .demo{
        width: 200px;
        cursor: pointer;
        border: 1px solid #ccc;
    }
    ul{
        display: none;
    }
</style>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<title>淡入淡出</title>
</head>
<body>

    <div class="demo">
        <p>Rose</p>
        <ul>
            <li>国泰民安</li>
            <li>风调雨顺</li>
            <li>五谷丰登</li>
        </ul>
    </div>
    
    <script>
    
    $('p').on('click', function () {
    
        if($(this).next().css('display') == 'none'){
    
            $(this).next().fadeIn();
    
        }else{
    
            $(this).next().fadeOut();
        }
    });
    
    </script>

</body>
</html>


最终的状态也是 display:block/none 的变化,只不过中间变化的过程

show()与hide():是把透明度、width、height、margin、padding 一起能变的都变了,

fadeln()与fadeOut():只专注于opactiy透明度的变化,

2、.fadeToggle()

$('p').on('click', function () {

    $(this).next().fadeToggle(3000);

});


时间放大3000毫秒后会发现,

从消失到出现,先让display变成block,然后让透明度opacity一点一点的变,

如果让透明先变到1后,再让display变成block就看不出淡入了,这个逻辑也很正常

3、.fadeTo()

.fadeTo( duration, to, easing, callblack ) 多了一个参数to

duration   1500毫秒

to              to是"到那"的意思(淡入到那)。运动到opacity:0.6时候,

easing       运动速率swing

callblack    运动到opacity:0.6时候,执行回调函数

$('p').on('click', function () {

    if($(this).next().css('display') == 'none'){

        $(this).next().fadeTo(1500, 0.6, 'swing', function(){
            // console.log($(this).next().css('opacity'));
            console.log($('ul').css('opacity'));
        });

    }else{

        $(this).next().fadeTo(1500, 0.1, 'swing', function(){
            console.log($(this).css('opacity'));
        });
    }
});

三、滑动

.slideDown() 卷出

.slideUp() 卷入

.slideToggle()

1、卷入卷出

slide关注的是高度height,卷帘门效果

$('p').on('click', function () {

    if($(this).next().css('display') == 'none'){
        $(this).next().slideDown(1500, 'swing', function(){
            console.log('卷出');
        });
    }else{
        $(this).next().slideUp(1500, 'swing', function(){
            console.log('卷人');
        });
    }
});

2、.slideToggle()

$('p').on('click', function () {

	$(this).next().slideToggle(3000, 'swing');

});



Leave a comment 0 Comments.

Leave a Reply

换一张