专栏首页web编程技术分享用jQuery 动画函数 animate 模拟豌豆发射

用jQuery 动画函数 animate 模拟豌豆发射

先上图。

Paste_Image.png

动态效果:

pea.gif

豌豆射手,草坪还有子弹都是现成的图片,本文主要讲解jQuery的animate函数的基本用法。

1. jQuery是库还是框架?

jQuery可以说是现在最流行的一个js类库,而非框架。

之前在知乎上看到有人说了这样一句话:

You call library. Framework calls you.

我深以为然,字面意思大概就是你可以无约束地使用类库,却需要在各种限制条件下使用一个框架。

我私以为,js 库指的是直接和document文档元素交互的一个API,你可以直接引用库,让它为你服务。而框架是偏向于架构的层次,你如果想要使用框架,就必须按照它的规则来。比如angular.js,它就给你提供方法的同时还约束了dom文档结构。

拿Java的三大框架来说,也是如此,你要想使用Spring,就得按照它的步骤来,就好像一个房子,钢筋水泥已经弄好,你只需要进去装修就OK了。而库,就有点类似于StringUtils的韵味,除了它暴露出来的接口,其他你都无需关心,直接调用就行了。

2. jQuery的animate函数

基本用法:

$('#id').animate(css,time,callback);

css : 你最终需要实现的样式列表 time: 过渡的时间 callback: 回调函数

animate函数的作用主要就是实现一些css样式的过渡效果。

3.引入 jQuery

比如,现在我有一个div盒子。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        <style type="text/css">
            #box {
                width: 300px;
                height: 300px;
                background:greenyellow;
            }
        </style>
    </head>
    <body>
        <div id='box'></div>
    </body>
    
    <script>
        
    </script>
    
</html>

在上面的代码中,我们引入了百度提供的jQuery文件。

那么如何快速判断是否引入成功了呢?提供以下几个方法: 1.console.log($); 效果:

Paste_Image.png

这说明引入成功了。

2.直接用浏览器验证 打开你的页面,按一下F12,出现这样的控制台,这是浏览器自带的(我这里使用的是谷歌浏览器)。

Paste_Image.png

输入$

Paste_Image.png

回车!

Paste_Image.png

诶,这样是不是也可以呢?

3. onmouseover事件

我们来给div盒子添加一个鼠标划上去的事件。

$('#box').on('mouseover',function(){
    alert();
});

划上去:

Paste_Image.png

嗯,最起码,这说明我们到目前为止的代码都是正确的,我初学js的时候就喜欢这样,让我感觉每一行代码都写得很放心。

3.用animate函数改变盒子宽度和高度

我们把alert去掉,加上下面的代码:

$('#box').on('mouseover',function(){
    $('#box').animate({width:600},500);
});

这表示当我把鼠标画上去的时候,就改变宽度为600px,过渡时间为500毫秒。

12.gif

如果我们希望在宽度加倍后,令高度也加倍,又该如何做呢?

对了,用回调函数,当第一个动画执行完毕,就继续执行下一个动画:

$('#box').on('mouseover',function(){
    $('#box').animate({width:600},500,function(){
        $('#box').animate({height:600},500);
    });
});

13.gif

这样就有了一个先后顺序。

本文简单地介绍了一下jQuery animate函数的使用。

5. 附录

最后,附上一开始案例的代码,除了animate函数,还用到了js的定时器setInterval方法:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <script type="text/javascript" src="jquery-1.11.2.min.js"></script>
        <style type="text/css">
            body {
                background: url(background1.jpg) no-repeat;
                position: fixed;
            }
            ul li {
                list-style: none;
            }
            .wrap {
                position: relative;
                left: 170px;
                top: 65px;
            }
            .plants1  {
                display: inline-block;
                position: relative;
                left:35px;
            }
            .plants1 .plant {
                position: relative;
                margin-bottom:20px;
            }
            .plants1 .plant .PB00 {
                position: absolute;
                top:-2px;
                left:15px;
            }
            
            .plants2  {
                display: inline-block;
                position: relative;
                left:2px;
            }
            .plants2 .plant {
                position: relative;
                margin-bottom:20px;
            }
            .plants2 .plant .PB00 {
                position: absolute;
                top:-2px;
                left:15px;
            }
            
            .plants3  {
                display: inline-block;
                position: relative;
                left:-40px;
            }
            .plants3 .plant {
                position: relative;
                margin-bottom:20px;
            }
            .plants3 .plant .PB00 {
                position: absolute;
                top:-2px;
                left:15px;
            }
        </style>
    </head>
    <body>
        <div class='wrap'>
            <ul class='plants1'>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                
            </ul>
            
            <ul class='plants2'>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                
            </ul>
            
            <ul class='plants3'>
                
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
                <li class='plant'>
                    <img class='Peashooter' src="img/Peashooter.gif" />
                    <img class='PB00' src="img/PB00.gif" />
                </li>
            </ul>
        </div>
    </body>
    
    <script type="text/javascript">
    
        function randomNum(num){
            return Math.floor(Math.random()*(num+1));
        };
        
        setInterval(function(){
            var $this = $('.PB00').eq(randomNum(17));
            $this.animate({'margin-left' : 1000},2000,function(){
                $this.css({'margin-left' : 0});
            });
        },10);
        
    </script>   
    
</html>

本文的素材和其他文章:http://www.jianshu.com/p/19a7a16d66b4 本章结束 ... 剽悍一小兔,电气自动化毕业。 参加工作后对计算机感兴趣,深知初学编程之艰辛。 希望将自己所学记录下来,给初学者一点帮助。

免责声明: 博客中所有的图片素材均来自百度搜索,仅供学习交流,如有问题请联系我,侵立删,谢谢。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第三节)

    剽悍一小兔
  • 第五讲 通过植物大战僵尸案例来谈谈CSS布局和定位

    相对定位就是移动一个标签,根据什么来移动呢?对了,就是根据它原来的位置移动,就这么简单。比如,我现在要移动这块场地,就这样做:

    剽悍一小兔
  • 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第十节)1. 详情页面的布局2. 从主页面到详情页面的跳转问题

    剽悍一小兔
  • RGB888 转 YCbCr444 算法的 HDL 实现

    虽说 OV5640 可以通过寄存器的设置,直接输出 YCbCr444 格式的视频流,但为了研究图像处理,以及最基本的视频格式转换,有意执行一次 RGB888转 ...

    碎碎思
  • CentOS 7编译安装Apache 2.4

    Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数计算机操作系统中运行。由于其跨平台...

    小柒吃地瓜
  • 网络入门模拟器:Cisco Packet Tracer 设备登陆实验

    上两篇文章《网络入门模拟器:Cisco Packet Tracer》和《网络入门模拟器:Cisco Packet Tracer 实验教程》分别介绍了Cisco ...

    ICT售前新说
  • 广告小程序后端开发(11.个人中心:获取用户数据,用户发布的广告和店铺及图片)

    玩蛇的胖纸
  • set\list\map部分源码解析

    List、Set实现Collection接口。Map并没有实现任何接口,但内部聚合了一个Collection对象

    洋仔聊编程
  • set\list\map部分源码解析

    List、Set实现Collection接口。Map并没有实现任何接口,但内部聚合了一个Collection对象

    洋仔聊编程
  • 为复杂混沌的微服务生产环境设计韧性系统

    阿里云在那天,至少挂半小时。“我们在运维上的一个操作失误,导致一些客户访问阿里云官网控制台和使用部分产品功能出现问题,引发了大量吐槽。”

    ThoughtWorks

扫码关注云+社区

领取腾讯云代金券