这篇文章主要介绍了 js 实现缓冲运动效果的方法, 涉及 javascript 操作元素运动的相关技巧, 具有一定参考借鉴价值, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
本文实例讲述了 js 实现缓冲运动效果的方法。分享给大家供大家参考。具体分析如下:
该实例可实现一开始速度很快,然后慢下来,直到停止的效果。
要点:
- var speed = (target-box.offsetLeft)/8;
目标点减去元素的当前位置的值除以 8, 因为 offsetleft 的值是一直在变大,所以速度的值也是一直的变小
- speed = speed>0?Math.ceil(speed):Math.floor(speed);
正向速度的时候向上取整,反向速度的时候向下取整
代码:
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="gb2312" />
- <title>
- 无标题文档
- </title>
- <style>
- <!-- body{margin:0; padding:0; font:12px/1.5 arial;} #box{width:100px;
- height:100px; position:absolute; background:#06c; left:0;} -->
- </style>
- <script>
- < !--window.onload = function() {
- var box = document.getElementById("box");
- var btn = document.getElementById("btn");
- var timer = null;
- btn.onclick = function() {
- startrun(300);
- }
- function startrun(target) {
- clearInterval(timer);
- timer = setInterval(function() {
- var speed = (target - box.offsetLeft) / 8;
- speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
- if (box.offsetLeft == target) {
- clearInterval(timer);
- } else {
- box.style.left = box.offsetLeft + speed + "px";
- }
- document.getElementById('abc').innerHTML += box.offsetLeft + ',' + speed + '<br>';
- },
- 30);
- }
- }
- //-->
- </script>
- </head>
- <body>
- <input id="btn" type="submit" value="向右运动">
- <div id="box">
- </div>
- <br>
- <textarea id="abc" cols="50" rows="10" style="margin-top:130px">
- </textarea>
- </body>
- </html>
希望本文所述对大家的 javascript 程序设计有所帮助。
来源: