JS实现的抛物线运动效果示例


Posted in Javascript onJanuary 30, 2018

本文实例讲述了JS实现的抛物线运动效果。分享给大家供大家参考,具体如下:

先来看看运行效果:

JS实现的抛物线运动效果示例

具体代码如下:

<!doctype html >
<html>
<head>
  <meta charset="utf-8"/>
  <title>抛物线运动</title>
  <style>
    .pwx_rect{position:absolute;left:10px;top:300px;background-color:#888;height:50px;width:50px;}
    .pwx_hr{border-top:2px solid #ddd;position:absolute;width:98%;left:0px;top:350px;}
  </style>
  <script>
    test = function(){
      var rect = document.getElementById("rect");
      pwx(rect,60,5); //参数2:抛物线角度,参数3:横向速度每次增加5
    }
    function pwx(rect,radian,step){
      var animate = function(opt){
        var cos = Math.cos(opt.radian*Math.PI/180);//邻边比斜边,60度的话等于1/2
        var sin = Math.sin(opt.radian*Math.PI/180);//对边比斜边,30度的话等于1/2
        var left = opt.rect.offsetLeft;
        var top = opt.rect.offsetTop;
        if(opt.radian>0){
          left+=opt.step;
          opt.radian-=1; //角度递减1
          var a = left - opt.initLeft;
          var c = (a/cos);
          var b = (sin*c);
          opt.rect.style.left = opt.initLeft+a+"px";
          opt.rect.style.top = opt.initTop-b+"px";
          setTimeout(function(){
            animate(opt);
          },10);
        }else{
          opt.rect.style.left = left+opt.step+"px";
          opt.rect.style.top = opt.initTop+"px";
        }
      }
      animate({
        step : step,
        rect : rect,
        radian : radian,
        initTop : rect.offsetTop,
        initLeft : rect.offsetLeft
      });
    }
  </script>
</head>
<body>
3water.com
<input type="button" value="抛物线" onclick="test()"/>
  <div class="pwx_rect" id="rect"></div>
  <div class="pwx_hr"></div>
</body>
</html>

实现思路:

JS实现的抛物线运动效果示例

X方向的边长每次递增5,角度每次递减1,根据这两个已知条件,通过三角函数就可以计算出Y方向的长度是多少

从而得出每次运动的X和Y方向的坐标值,达到抛物线的效果

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
Jul 26 Javascript
javascript设计模式之工厂模式示例讲解
Mar 04 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
Aug 11 Javascript
Bootstrap模态框使用详解
Feb 15 Javascript
vue双向绑定简要分析
Mar 23 Javascript
js实现倒计时关键代码
May 05 Javascript
利用Vue.js实现求职在线之职位查询功能
Jul 03 Javascript
基于vue cli 通过命令行传参实现多环境配置
Jul 12 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
Aug 23 Javascript
Node.js学习之内置模块fs用法示例
Jan 22 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 Javascript
express如何使用session与cookie的方法
Jan 30 #Javascript
JavaScript实现的贝塞尔曲线算法简单示例
Jan 30 #Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
Jan 30 #Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 #Javascript
微信小程序数据存储与取值详解
Jan 30 #Javascript
Vue精简版风格概述
Jan 30 #Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 #Javascript
You might like
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
javascript时区函数介绍
2012/09/14 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
python验证码识别的示例代码
2017/09/21 Python
详解Python自建logging模块
2018/01/29 Python
python邮件发送smtplib使用详解
2020/06/16 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
食品营养与检测应届生求职信
2013/11/08 职场文书
计算机专业大学生的自我评价
2013/11/14 职场文书
环保倡议书100字
2014/05/15 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
政协调研汇报材料
2014/08/15 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
财务工作失误检讨书
2015/02/19 职场文书
暂停营业通知
2015/04/25 职场文书
项目战略合作意向书
2015/05/08 职场文书
小学信息技术教学反思
2016/02/16 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP