【技术分享】WEB前端全栈成长计划(二阶段)-jQuery之特效篇(3)

举报
Zhoubo 发表于 2020/08/15 00:58:55 2020/08/15
【摘要】 本篇将总结jQuery特效--使用animate()方法来自定义动画特效、轮播图片切换时左右滑动的特效示例。

本篇将总结jQuery特效--使用animate()方法来自定义动画特效、轮播图片切换时左右滑动的特效示例。

动画

  • animate() 创建自定义动画效果

语法结构

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

  • params 必选参数,定义动画效果的CSS属性

  • speed 可选参数,定义动画效果的时长,可取值为毫秒、"slow""fast""normal"

  • callback 可选参数,定义动画效果结束后执行的函数名称,它可以是函数名称和匿名函数

  • 现在我们定义一个小动画效果,将一个方块向左移动

  • 默认情况下html元素出现在正常流中(正常流中会忽略leftrightbottomtopz-index声明|),如果要对元素位置进行操作,首先得设置元素的position属性为relativeabsolutefixed这三个其中一个。

    <style>
        #div1{
            width:200px;
            height: 200px;
            border:1px solid black;
            background-color:blue;
            position:absolute;
            color:white;
            line-height:200px;
            text-align:center;
        }
        #div0{
            position: relative;
            display:block;
        }
    </style>
 
    <div id="div0">
        <button id="btn1">开始动画(单属性)</button>
        <button id="btn2">开始动画(多属性)</button>
        <button id="btn3">开始动画(top && width += 50)</button>
    </div>
 
    <script>
        $("#btn1").click(function(){
            $("#div1").animate({
                left:'200px'                             
            });
        });
        $("#btn2").click(function(){
            $("#div1").animate({
                left:'200px',
                width:'350'                             
            });
        });
        $("#btn3").click(function(){
            $("#div1").animate({
                top:'+=50px',
                width:'+=50px'                             
            });
        });
    </script>
 
    <div id="div1">将一个方块向左移动200px</div>


 

  • animate() 操作多个属性

以对象多个属性名的方式来设置多个属性

    <div id="div0">
        <button id="btn2">开始动画(多属性)</button>
    </div>
    
    <script>
        $("#btn2").click(function(){
            $("#div1").animate({
                left:'200px',
                width:'350'                             
            });
        });
    </script>


   

  • animate()操作CSS属性注意事项

  • 必须使用Camel(驼峰拼写)拼写法来写CSS属性,css属性padding-left要写成paddingLeftmargin-right写成marginRight

  • animate() 使用运算符

支持 +=-=这样的运算符

    <div id="div0">
        <button id="btn3">开始动画(top && width += 50)</button>
    </div>
    
    <script>
        $("#btn3").click(function(){
            $("#div1").animate({
                top:'+=50px',
                width:'+=50px'                             
            });
        });
    </script>


  • animat() 使用动画值

  • "show" 为指定的css属性添加 显示效果

  • "hide" 为指定的css属性添加 隐藏效果

  • "toggle" 为指定的css属性添加 在显示和隐藏之间切换的效果

    <div id="div0">
        <button id="btn4">开始动画(动画值)</button>
    </div>
 
    <script>
        $("#btn4").click(function(){
            $("#div1").animate({
                top:'+=50px',
                right:'toggle'
            });
        });
    </script>


  • animate() 动画队列

前面我们都单个动画效果,动画队列相关于可以设置一组动画,我们只需要编写多个animate()方法 jQuery会将animate方法组成队列,然后逐一执行动画。

    <div id="div0">
        <button id="btn5">开始动画(动画队列-一组动画后淡出 && 淡入)</button>
    </div>
 
    <script>
        $("#btn5").click(function(){
            var animateDiv = $("#div1");
            animateDiv.animate({height:'300px',opacity:'0.5'},'slow');
            animateDiv.animate({width:'300px',opacity:'1'},'slow');
            animateDiv.animate({height:'200px',opacity:'0.5'},'slow');
            animateDiv.animate({width:'200px',opacity:'1'},'slow');
            animateDiv.animate({fontSize:'28px'},'slow'); //放大文本
            animateDiv.fadeOut(3000).fadeIn('slow');   //淡出、淡入 链接效果
        });
    </script>


 


  • animate() 写个轮播图左右切换特效

总结完上面的练习,对于轮播图的实现相信大家心中也有了思路,以下是我写的一个轮播图片切换时左右滑动的特效示例

    <style>
        #btn6{
            position: relative;
            margin: 10px;
        }
        #lunbo{
            position: relative;
        }
    </style>
    <button id="btn6">轮播图-向左淡出</button>
    <button id="btn7">轮播图-向右淡出</button>
 
    <div id="lunbo">
        <div id="div4" style="width:400px;height:200px;background-color: red;position: absolute;z-index: 2;"></div>
        <div id="div5" style="width:400px;height:200px;background-color: yellow;position: absolute;z-index: 1;"></div>
    </div>
    <script>
        $("#btn6").click(function(){
            var lunboDiv4 = $("#div4");
            lunboDiv4.animate({left:'0px',width:'hide',opacity:'0.5'},3000);
        });
        $("#btn7").click(function(){
            var lunboDiv5 = $("#div5");
            lunboDiv5.animate({left:'400px',width:'hide',opacity:'0.5'},3000);
        });
    </script>

特效篇总结就告一段落了,相信大家已经熟悉了jQuery特效的应用,但是如果想取得更好的学习效果,建议大家自己动手用jQuery写一个轮播图的网页。

实例代码已上传我的Gitee项目 https://gitee.com/net_master/Ajax_Node/tree/master/jQuery

书山有路勤为径,学海无涯苦作舟!!!

zhoubo

2020.8.15 at home

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。