JS简单回弹原理
/*
*JS简单回弹原理
*/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
*{ padding:0; margin:0;}
#div1 { width:100px; height:100px; position:absolute; background:red;}
</style> <script type="text/javascript">
window.onload = function (){
startMove("div1");
function startMove(id){
var iSpeedX = 10;
var iSpeedY = 10;
setInterval(function(){
var oDiv = document.getElementById(id); var l = oDiv.offsetLeft + iSpeedX; //物体在X方向上的位移
var t = oDiv.offsetTop + iSpeedY; //物体在Y方向上的位移 document.title = l + " , " + t + " , " + iSpeedX + " , " + iSpeedY; //在标题栏显示位移坐标和当前在X、Y方向上的速度 if(t > document.documentElement.clientHeight - oDiv.offsetHeight){ //判断物体在Y方向上是否超出屏幕可视区的底部
t = document.documentElement.clientHeight - oDiv.offsetHeight;
iSpeedY *= -1; //改变当前在Y方向上的速度、回弹
}else if(t < 0){ //判断物体在Y方向上是否超出屏幕可视区的顶部
t = 0;
iSpeedY *= -1; //再改变当前在Y方向上的速度、回弹
}
if(l > document.documentElement.clientWidth - oDiv.offsetWidth){ //判断物体当前在X方向上是否超出屏幕可视区的右边
l = document.documentElement.clientWidth - oDiv.offsetWidth;
iSpeedX *= -1; //改变当前在X方向上的速度、回弹
}else if(l < 0){ //判断物体当前在X方向上是否超出屏幕可视区的左边
l = 0;
iSpeedX *= -1; //改变当前物体在X方向上的速度、回弹
} oDiv.style.left = l + "px";
oDiv.style.top = t + "px"; },30);
}
}
</script>
</head> <body> <div id="div1"></div> </body>
</html>
- 给物体初始一个在X、Y方向上的运动速度。
- 通过定时器改变物体左右坐标改变left、top的值来实现位移效果
- 判断物体是否超出可视区的边界值(改变物体在X、Y方向的速度)
JS简单回弹原理的更多相关文章
- JS垂直落体回弹原理
/* *JS垂直落体回弹原理 */ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- js简单实现链式调用
链式调用实现原理:对象中的方法执行后返回对象自身即可以实现链式操作.说白了就是每一次调用方法返回的是同一个对象才可以链式调用. js简单实现链式调用demo Object.prototype.show ...
- Sea.Js的运行原理(转)
1.CMD(Common Module Definition)规范 Sea.js采用了和Node相似的CMD规范,使用require.exports和module来组织模块.但Sea.js比起Node ...
- 原生js简单调用百度翻译API实现的翻译工具
先来个在线demo: js翻译工具 或者百度搜索js简单调用百度翻译API工具(不过有个小小的界面显示bug,我想细心的人应该会发现) 或者直接前往该网址:js翻译工具 或者前往我的github:gi ...
- JavaScript是如何工作的: CSS 和 JS 动画底层原理及如何优化它们的性能
摘要: 理解浏览器渲染. 原文:JavaScript是如何工作的: CSS 和 JS 动画底层原理及如何优化它们的性能 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是专门探索 J ...
- vue.js响应式原理解析与实现
vue.js响应式原理解析与实现 从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染.之后,再接触了vue.js,当时也一度很 ...
- 深入解析vue.js响应式原理与实现
vue.js响应式原理解析与实现.angularjs是通过脏检查来实现数据监测以及页面更新渲染.之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新渲染页面.vue.js ...
- vuex中mapGetters的使用及简单实现原理
一.项目中的mapGetters在Vue项目的开发过程中必然会使用到vuex,对vue项目公用数据进行管理,从而解决组件之间数据相互通信的问题,如果不使用vuex,那么一些非父子组件之间的数据通信将会 ...
- js 简单的滑动2
js 简单的滑动教程(二) 作者:Lellansin 转载请标明出处,谢谢 现在我们让滑动多一个功能,三张图.点击左边向左滑动,点右向右滑,碰到临界值的时候可以循环滑动 原理也很将简单,用posi ...
随机推荐
- VS Code的git配置
最近打算使用VS Code作为python的编辑器,这里记录一下VS Code中git的配置方法 因为vscode中git只是使用本地的git,所以本地必须先安装git才行. 1.git的安装 git ...
- 使用docker踩过的坑
最近需要使用docker,但是win10电脑的系统不是docker windows适用版本,没法在windows上安装 于是就上centos虚拟机里面装了一个docker docker pull文件的 ...
- Go语言fmt.Printf使用指南
文章引用自 fmt fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 向外输出 标准库fmt提供了以下几种输出相关函数. Print Pri ...
- 学习笔记(25)- NLP的几个概念
NLP的几个概念 从技术研究的角度,简单介绍自然语言处理的几个概念 1. 对抗学习 主要指对抗生成网络. 2个主要构成:判别器.生成器 判别模型尽可能提取特征正确率增加的模型,生成模型尽可能" ...
- IDEA Tomcat配置 VM Option
-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8
- dp(出国简历)
Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了.要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的.Speakless没有 ...
- Uva 11300 Spreading the Wealth(贪心)
题目链接:https://vjudge.net/problem/UVA-11300 这道题的思路太神了,但很难想到是贪心. 用M表示每个人最终拥有的金币数. 首先假设有四个人.假设1号给2号3枚,2号 ...
- 我的 Python 编码规范
python 文件的组成 为了便于描述,先上一个 demo #!/usr/bin/env python # -*- coding: utf-8 -*- """通常这里是关 ...
- 关于报错:Warning: Cannot modify header information - headers already sent by (output started at
8月5日,第一个项目即将完成,测试时,发现登录功能会出现小问题:记住密码的时候会报错 Warning: Cannot modify header information - headers alrea ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 位运算
bitwise_and() 函数对数组中整数的二进制形式执行位与运算. import numpy as np print ('13 和 17 的二进制形式:') a,b = 13,17 print ( ...