JS运动基础(三) 弹性运动

加减速运动
速度不断增加或减少
速度减小到负值,会向反方向运动

弹性运动
在目标点左边,加速;在目标点右边,减速
根据距离,计算加速度

带摩擦力的弹性运动
弹性运动+摩擦力

弹性:
速度 += (目标点 - 当前值)/系数;  //6 , 7 ,
8
速度 *= 摩擦系数;   // 0.7 0.75
终止条件
距离足够近 并且
速度足够小

缓冲:
var 速度 = (目标点 - 当前值)/系数;
速度取整


 1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5 <title>无标题文档</title>
6 <style>
7 #div1{ width:100px; height:100px; background:red; position:absolute; left:0;}
8 #bg{ width:1px; height:500px; background:black; position:absolute; left:500px; top:0;}
9 </style>
10 <script>
11
12 //摩擦力 : F = fM
13
14 window.onload = function(){
15 var oInput = document.getElementById(‘input1‘);
16 var oDiv = document.getElementById(‘div1‘);
17
18 var timer = null;
19 var iSpeed = 0;
20
21 oInput.onclick = function(){
22 startMove();
23 };
24
25 function startMove(){
26 clearInterval(timer);
27 timer = setInterval(function(){
28
29 /*if( oDiv.offsetLeft < 500 ){
30 iSpeed += (500 - oDiv.offsetLeft)/50;
31 }
32 else{
33 iSpeed -= (oDiv.offsetLeft - 500)/50;
34 }*/
35
36 iSpeed += (500 - oDiv.offsetLeft)/6;
37 iSpeed *= 0.75;
38
39 if( Math.abs(iSpeed)<=1 && Math.abs(500 - oDiv.offsetLeft)<=1 ){/*距离足够近 并且 速度足够小*/
40 clearInterval(timer);
41 oDiv.style.left = ‘500px‘;
42 iSpeed = 0;
43 }
44 else{
45 oDiv.style.left = oDiv.offsetLeft + iSpeed + ‘px‘;
46 }
47
48 document.title = oDiv.style.left + ‘,‘ + iSpeed;
49
50 },30);
51 }
52
53 };
54 </script>
55 </head>
56
57 <body>
58 <input type="button" value="开始运动" id="input1">
59 <div id="div1"></div>
60 <div id="bg"></div>
61 </body>
62 </html>

JS运动基础(三) 弹性运动

时间: 2024-10-12 18:28:55

JS运动基础(三) 弹性运动的相关文章

JS运动---运动基础(缓冲运动)

(1)手风琴效果 分析: (2)基础缓冲运动 接下来取整 原因: px为计算机识别的最小单位,1px无法再往下拆分.所以css如果取值200.5px,解析时计算机会自动将其改为200px注意:这里的数值并没有四舍五入计算,200.9px最后依然是200px 速度不能是小数,需要取整,所以接下来进行取整 因为从左到右运动和从右到左运动不一样,所以需要判断 (3)右侧悬浮框缓冲运动 <!DOCTYPE HTML> <html> <head> <meta charset

js运动基础之缓冲运动

单属性缓冲运动 1 /** 2 * 单属性缓冲运动 3 */ 4 function fnSingleBufferMove(oDom, sAttr, iTarget, fn){ 5 var iSpeed, iCur; 6 clearInterval(oDom.timer); 7 oDom.timer = setInterval(function(){ 8 // 计算当前值 9 if(sAttr == 'opacity'){ 10 iCur = Math.round(fnGetStyle(oDom,

JS运动基础(四) 碰撞运动

碰撞运动撞到目标点,速度反转无重力的漂浮Div速度反转滚动条闪烁的问题过界后直接拉回来 加入重力反转速度的同时,减小速度纵向碰撞,横向速度也减小横向速度小数问题(负数) 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档

JS运动基础(二) 摩擦运动、缓冲运动

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

第八节 JS运动基础

运动基础 让Div运动起来 速度--物体运动的快慢 运动中的Bug 不会停止 速度取某些值会无法停止 到达位置后再点击还会运动 重复点击速度加快 匀速运动(速度不变) 运动框架及应用: 运动框架: 在开始运动时,关闭已有定时器 把运动和停止隔开(if/else) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS运

js弹性运动滑动的菜单

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>弹性运动效果下滑的菜单</title> <script>  window.onload = function(){   var oUl = document.getElementById('oul');   var oLi = oul.getElem

JS学习之路,之弹性运动框架

弹性运动:顾名思义,就如同物理中的加速减速运动,当开始时速度过大,到达终点时,速度不会立刻停下,而是再前进一段距离,而后再向相反方向运动,如此往复. var timer=null; var speed=0; //速度必须放在外面,放在里面的话,每次速度都是从0开始而不是保持上次执行的结果 function move(){ timer=setInterval(function(){ /*if (oDiv.offsetLeft<300) { speed+=(300-oDiv.offsetLeft)/

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> <title>弹性运动</title> &l

js弹性运动---弹性菜单

<!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>弹性运动---弹性菜单</title> <style> * { padding: 0; margin: 0; } li { list-style: none; } ul {