jQuery 动画详解——比js动画更方便的方法

jQuery 标准动画

通过类似于动画的形式,来完成标签的显示隐藏
实际上,本质,就是我们之前写的 运动函数
通过 定位的 left top 属性 和 透明度 opacity 来完成效果

1. $(标签).show() 显示

语法 : $(标签).show(时间,运动曲线,运动结束时执行的函数)

运动到指定的位置,也就是css样式,定义的标签位置
离那里进,就从那里开始运动
离 左上角近 就从左上角开始运动

2. $(标签).hide() 隐藏

语法 : $(标签).hide(时间,运动曲线,运动结束时执行的函数)

从原始的位置,开始隐藏
离那里近,就隐藏到那里

3. $(标签).toggle() 切换

语法 : $(标签).toggle(时间,运动曲线,运动结束时执行的函数)

隐藏就改为显示,显示就改为隐藏   

实例

HTML:
<button name="show">显示</button>
<button name="hide">隐藏</button>
<button name="toggle">切换</button>
<div></div>

<script src="./jquery.min.js"></script>

<script>
    // 给显示按钮,添加事件
    $('[name="show"]').click(function(){
        $('div').show( 2000 , 'linear' , function(){
            console.log('div完全显示了');
        } )
    });
    
    
    // 给隐藏按钮,添加事件
    $('[name="hide"]').click(function(){
        $('div').hide( 2000 , 'linear' , function(){
            console.log('div完全隐藏了');
        } )
    });
    
    // 给切换按钮,添加事件
    $('[name="toggle"]').click(function(){
        $('div').toggle( 2000 , 'linear' , function(){
            console.log('div完全切换了');
        } )
    });
</script>
css:
div{
    width: 300px;
    height: 300px;
    background: pink;
    margin: 0 auto;
    /* position: fixed; */
    /* right: 0; */
    display: none;
}

jQuery 折叠动画

通过改变高度,来实现效果。

1. $(标签).slideDown() 显示

语法 : $(标签).slideDown(时间,运动曲线,运动结束时执行的函数)

从 css 设定的位置上 , 下拉显示标签

2. $(标签).slideUp() 隐藏

语法 : $(标签).slideUp(时间,运动曲线,运动结束时执行的函数)

从 css 设定的位置上 , 上卷隐藏标签

3. $(标签).slideToggle() 切换

语法 : $(标签).slideToggle(时间,运动曲线,运动结束时执行的函数)

隐藏就改为显示,显示就改为隐藏

实例

HTML:
<button name="down">折叠显示</button>
<button name="up">折叠隐藏</button>
<button name="toggle">折叠切换</button>
<div></div>

<script src="./jquery.min.js"></script>

<script>
    // 给显示按钮,添加事件
    $('[name="down"]').click(function(){
        $('div').slideDown( 2000 , 'linear' , function(){
            console.log('div完全显示了');
        } )
    });


    // 给隐藏按钮,添加事件
    $('[name="up"]').click(function(){
        $('div').slideUp( 2000 , 'linear' , function(){
            console.log('div完全隐藏了');
        } )
    });

    // 给切换按钮,添加事件
    $('[name="toggle"]').click(function(){
        $('div').slideToggle( 2000 , 'linear' , function(){
            console.log('div完全切换了');
        } )
    });
</script>
css:
div{
    width: 300px;
    height: 300px;
    background: pink;
    margin: 0 auto;
    display: none;
}

jQuery 渐隐渐现动画

通过改变透明度,来实现效果。

1. $(标签).fadeIn() 显示

语法 : $(标签).fadeIn(时间,运动曲线,运动结束时执行的函数)

从 css 设定的位置上 , 下拉显示标签

2. $(标签).fadeOut() 隐藏

语法 : $(标签).fadeOut(时间,运动曲线,运动结束时执行的函数)

从 css 设定的位置上 , 上卷隐藏标签

3. $(标签).fadeToggle() 切换

语法 : $(标签).fadeToggle(时间,运动曲线,运动结束时执行的函数)

隐藏就改为显示,显示就改为隐藏

实例

HTML:
<button name="in">逐渐显示</button>
<button name="out">逐渐隐藏</button>
<button name="toggle">渐隐渐现</button>
<div></div>

<script src="./jquery.min.js"></script>

<script>
    // 给显示按钮,添加事件
    $('[name="in"]').click(function(){
        $('div').fadeIn( 2000 , 'linear' , function(){
            console.log('div完全显示了');
        } )
    });


    // 给隐藏按钮,添加事件
    $('[name="out"]').click(function(){
        $('div').fadeOut( 2000 , 'linear' , function(){
            console.log('div完全隐藏了');
        } )
    });

    // 给切换按钮,添加事件
    $('[name="toggle"]').click(function(){
        $('div').fadeToggle( 2000 , 'linear' , function(){
            console.log('div完全切换了');
        } )
    });
</script>
css:
div{
    width: 300px;
    height: 300px;
    background: pink;
    margin: 0 auto;
    display: none;
}

jQuery 自定义动画

$(标签).animate()

可以通过 自定义动画 实现, css样式的改变
语法形式:
$(标签).animate( {属性:属性值,属性:属性值…} )

参数1: 要改变的 css的属性和属性值   可以没有单位px
参数2: 定义的执行时间
参数3: 定义的运动曲线
参数4: 运动结束,执行的函数

特别注意:有一些css样式,是不能改变的
例如颜色

实例

HTML:
<button name="width">改变宽度</button>
<button name="wh">改变宽度高度</button>
<button name="color">改变颜色</button>
<div>中国</div>

<script src="./jquery.min.js"></script>

<script>
    $('[name="width"]').click(function(){
        let randomW = parseInt(Math.random()*(500+1-100)+100 );
        console.log(randomW);
        $('div').animate({
            width : `${randomW}px`,
        } , 2000 , 'linear' , function(){
            console.log('运动结束了')
        })
    });

    $('[name="wh"]').click(function(){
        let randomW = parseInt(Math.random()*(500+1-100)+100 );
        let randomH = parseInt(Math.random()*(500+1-100)+100 );
        console.log(randomW,randomH);
        $('div').animate({
        
            width : `${randomW}px`,   
            height: `${randomH}px`,
        } , 2000 , 'linear' , function(){
            console.log('运动结束了')
        })
    });

    $('[name="color"]').click(function(){
        let randomColor = `rgb(${parseInt(Math.random()*256)} ,${parseInt(Math.random()*256)} , ${parseInt(Math.random()*256)})`;
        console.log(randomColor);
        $('div').animate({
            background : randomColor,
            color : randomColor,
        } , 2000 , 'linear' , function(){
            console.log('运动结束了')
        })
    });
</script>
css:
div{
    width: 300px;
    height: 300px;
    background: pink;
    margin: 0 auto;
    color: red;
    font-size: 100px;
    /* display: none; */
}

jQuery 停止动画

.stop()

触发程序的执行,会马上停止当前动画的执行
就从标签运动到的当前位置开始,马上执行下一次动画

.finish()

触发程序的执行,会马上停止,当前动画的执行
标签会立即执行动画结束时的效果
从动画结束的位置,开始执行,下一次动画

实例

HTML:
<button name="go">go</button>
<button name="back">back</button>
<div></div>

<script src="./jquery.min.js"></script>

<script>
    // 点击触发,新的运动,会马上停止当前运动,并且在当前运动的终止位置,开始执行新的运动
    $('[name="go"]').click(function(){
        // go上添加,终止的是 back的运动

        $('div').stop().animate( {left:'500px' , top:'500px'} , 2000)
    });

    $('[name="back"]').click(function(){
        // 给back添加 .stop()
        // 作用是 在 执行当前 back的运动之前,如果还有其他正在执行的运动
        // 要立即停止,从当前停止的位置,直接执行back的运动
        // $('div').stop().animate( {left:'0px' , top:'50px'} , 2000);

        // back添加的,实际上是终止的的go的运动
        $('div').finish().animate( {left:'0px' , top:'50px'} , 2000);
        
    });
</script>
css:
div{
    width: 100px;
    height: 100px;
    background: pink;
    position: absolute;
    top:50px;
    left: 0;
}

小结

stop()  和  finish()
都不是操作当前这个运动的
是定义执行当前运动之前,如果还有其他正在执行的运动,应该怎么办
stop()    就从当前标签运动的位置,开始,立即执行下一次运动
finish()  从之前运动的终点目标位置,开始,立即执行下一次运动
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值