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, sAttr) * 100);
11             }else{
12                 iCur = parseInt(fnGetStyle(oDom, sAttr));
13             }
14
15             // 计算速度
16             iSpeed = (iTarget - iCur) / 8;
17             iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); // 速度取整(浏览器会对样式的小数部分进行四舍五入,导致不能达到终点)
18
19             // 运动停止
20             if(iCur == iTarget){
21                 clearInterval(oDom.timer);
22                 fn && fn();
23             }else{
24                 if(sAttr == ‘opacity‘){
25                     oDom.style.opacity = (iCur + iSpeed) / 100;
26                     oDom.style.filter = ‘alpha(opacity: ‘ + (iCur + iSpeed) + ‘)‘;
27                 }else{
28                     oDom.style[sAttr] = iCur + iSpeed + ‘px‘;
29                 }
30             }
31         }, 30);
32     }

多属性缓冲运动

 1     /**
 2      * 多属性缓冲运动
 3      */
 4     function fnMultiBufferMove(oDom, json, fn){
 5         var iSpeed, iCur, bStop;
 6         clearInterval(oDom.timer);
 7         oDom.timer = setInterval(function(){
 8             bStop = true;
 9             for(var sAttr in json){
10                 // 计算当前值
11                 if(sAttr == ‘opacity‘){
12                     iCur = Math.round(fnGetStyle(oDom, sAttr) * 100);
13                 }else{
14                     iCur = parseInt(fnGetStyle(oDom, sAttr));
15                 }
16
17                 // 计算速度
18                 iSpeed = (json[sAttr] - iCur) / 8;
19                 iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); // 速度取整(浏览器会对样式的小数部分进行四舍五入,导致不能达到终点)
20
21                 // 运动
22                 if(iCur != json[sAttr]){
23                     bStop = false;
24                     if(sAttr == ‘opacity‘){
25                         oDom.style.opacity = (iCur + iSpeed) / 100;
26                         oDom.style.filter = ‘alpha(opacity: ‘ + (iCur + iSpeed) + ‘)‘;
27                     }else{
28                         oDom.style[sAttr] = iCur + iSpeed + ‘px‘;
29                     }
30                 }
31             }
32
33             // 运动停止
34             if(bStop){
35                 clearInterval(oDom.timer);
36                 fn && fn();
37             }
38         }, 30);
39     }
时间: 2024-10-11 13:18:54

js运动基础之缓冲运动的相关文章

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

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

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

加减速运动速度不断增加或减少速度减小到负值,会向反方向运动弹性运动在目标点左边,加速:在目标点右边,减速根据距离,计算加速度带摩擦力的弹性运动弹性运动+摩擦力 弹性:速度 += (目标点 - 当前值)/系数;  //6 , 7 , 8速度 *= 摩擦系数;   // 0.7 0.75终止条件距离足够近 并且 速度足够小 缓冲:var 速度 = (目标点 - 当前值)/系数;速度取整 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <me

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

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

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

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

JS小问题之——缓冲运动

今天写一个实现动画缓冲的效果,源代码用到了一个小技巧,之前觉得并没有什么用,后来觉得还是很有必要的,贴上来记录一下. 代码如下: //图片切换,淡入淡出效果 function show(a){ index=a for(i=0;i<onum.length;i++)onum[i].className=""; onum[index].className="current"; clearInterval(timer); console.log(oimg[0].offs

JS实现多物体width缓冲运动实例

多物体运动,运动参数不能公用. 这篇文章主要介绍了JS实现多物体缓冲运动实例代码,有需要的朋友可以参考一下 效果: 思路: 利用setInterval计时器进行运动,offsetWidth实现宽度的变动,在用onmouseover将终点和所选中的DIV放入参数再进行缓冲运动. 代码: 代码如下: <head runat="server"> <title></title> <style type="text/css">

第八节 JS运动基础

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

js之运动框架缓冲运动

由于JS里对于数值小数点会自动去除,所以对于运动位置,需要使用Math.ceil()向上取整或者 Math.floor()向下取整进行解决 以下是我的缓冲运动练习简单代码 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

js缓冲运动代码实例

js缓冲运动代码实例:元素的缓冲运动效果要比匀速运动更为美观一些,因为显得更为有张力和弹性,当然对于浏览者来说可能会有更好的效果,那么留住用户的可能性也就更大,下面就通过代码实例简单介绍一下如何实现此效果.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www