介绍几种运动——匀速、加速、缓冲、弹性
来源:互联网 发布:怎么网络推广 编辑:程序博客网 时间:2024/05/17 23:52
之前有介绍过弹幕的写法,原理就是利用left值的变化,产生运动。
今天我们再来写几种运动:匀速、加速、缓冲、弹性。
效果图:
html就很简单了,我们还是花时间来看一下js的代码。
<div id='first' class='div-model first'>匀速</div> <div id='second' class='div-model second'>缓冲</div> <div id='third' class='div-model third'>加速</div> <div class='div-model four' id="four">弹性</div> <button id='btn' class="btn">开始进行运动</button>
匀速运动是最简单的一个,当left的值小于500的时候,加一个定时器,每20毫秒left值加10px;
//匀速运动 var lastPx = 500; var first = $('first'); var timer = setInterval(function() { var firstLeft = parseInt(first.style.left); firstLeft = isNaN(firstLeft) ? 0 : firstLeft; if (firstLeft >= lastPx) { clearInterval(timer); return; } first.style.left = firstLeft + 10 + 'px'; }, 20)
缓冲运动,即先加速,后减速直至到达目的地。原理是取到left值,500减去left值再除以8,得到一个speed,如果left+speed小于500就加一个定时器,每50毫秒让left等于这个数值。
var lastPx = 500; //缓冲运动 var second = $('second'); var speed1 = 0; var timer2 = setInterval(function() { var secondLeft = parseInt(second.style.left); secondLeft = isNaN(secondLeft) ? 0 : secondLeft; var speed = (lastPx - secondLeft) / 8; speed = Math.ceil(speed); // 向上取整 if (secondLeft + speed >= lastPx) { clearInterval(timer2); second.style.left = '500px' return; } second.style.left = secondLeft + speed + 'px'; }, 50)
ceil是向上取整的意思。
有了上面的例子,加速运动就很简单了。没50毫秒,使left的值+1;
var lastPx = 500; //加速运动 var third = $('third'); var speed = 1; var timer3 = setInterval(function() { var thirdLeft = parseInt(third.style.left); thirdLeft = isNaN(thirdLeft) ? 0 : thirdLeft; if (thirdLeft + speed >= 500) { clearInterval(timer3); third.style.left = '500px' return; } third.style.left = thirdLeft + speed + 'px'; speed += 1; }, 50)
弹性运动就是到达目的地后,抖三抖啊抖三抖。首先要判断是否到达目的地,若left值大于500,则让speed值为负,left+负的speed值,就往回运动,此时就没到达目的地,让speed的值为正,继续往前运动。形成弹性的效果。
var lastPx = 500; //弹性运动 var four = $('four'); var count = 20; var speed4 = 19; var timer4 = setInterval(function() { var fourLeft = parseInt(four.style.left); fourLeft = isNaN(fourLeft) ? 0 : fourLeft; four.style.left = fourLeft + speed4 + 'px'; if (count == 0) { four.style.left = lastPx + 'px'; clearInterval(timer4); } if (fourLeft > lastPx) { speed4 = 0 - speed4; count--; } }, 20)
阅读全文
0 0
- 介绍几种运动——匀速、加速、缓冲、弹性
- js运动之一(匀速,折返,缓冲,加速)
- 缓冲运动与弹性运动
- js缓冲运动、弹性运动、碰撞运动
- 原生Js完美运动框架(缓冲运动和弹性运动)
- 弹性运动——学习笔记
- 一个div 缓冲运动—变宽
- 多个div 缓冲运动—变宽
- js动画之匀速运动、缓冲运动、弹性运动、碰撞运动、属性变化动画
- Javascript 缓冲运动——逐行分析代码,让你轻松了解缓冲运动的原理
- 弹性运动
- Javascript运动概念1——缓冲运动、匀速运动、运动框架
- js运动-弹性运动
- 缓冲运动
- 缓冲运动
- 缓冲运动 //缓冲运动 (目标值
- js运动-运动缓冲
- 包含缓冲和弹性运动的原生JS封装以及例子
- [PHP学习]PHP中跳出循环break,continue,return,exit的区别
- Support Page for Phone Manager
- 秦苍科技数据科学家沈赟:AI在消费金融产品优化以及风险控制中的应用
- 关于背包问题的进一步优化
- Luogu 瑞士轮
- 介绍几种运动——匀速、加速、缓冲、弹性
- JAVA集合入门
- C#中的Attribute详解
- weblogic.Deployer命令行参考配置说明
- 08 八进制和十六进制
- 【Linux】线程属性控制
- 冒泡排序的原理
- 新浪短网址API接口
- Java编程之反射中的注解详解