原生JS实现封装的抖动函数框架

<style>
ul{ margin-top: 100px; }
li {
float: left;
margin-left: 20px;
position: absolute;
top: 0;
margin-top: 100px;
}
</style> <ul>
<li>1111</li>
<li>2222</li>
<li>3333</li>
<li>4444</li>
</ul> <script>
var oLi = document.getElementsByTagName('li');
for (var i = 0; i < oLi.length; i++) {
oLi[i].style.left = i + '10px';
oLi[i].onmouseover = function () {
var _this = this;
shake(_this, 'top', 20, function () {
alert('回调已完成')
})
}
} //抖动运动框架
function shake(obj, attr, speed, endFn) {
if (obj.onoff) return; //当前的onoff=false
obj.onoff = true;
var pos = parseInt(getStyle(obj, attr));
var arr = []; //10,-10,8,-8,6,-6......
var timer = null;
var num = 0; for (var i = speed; i > 0; i -= 2) {
arr.push(i, -i);
}
arr.push(0); //最后加上0 obj.timer = setInterval(function () {
obj.style[attr] = pos + arr[num] + 'px';
num++;
if (num === arr.length) {
clearInterval(obj.timer);
endFn && endFn();//判断回调函数
obj.onoff = false;
}
}, 50)
}
//获取css样式
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj)[attr];
}
}
</script>

这边穿梭进入演示空间

JS 抖动函数封装的更多相关文章

  1. JS——tab函数封装

    1.为li标签添加index属性,这个属性正好就是span标签数组的index值 2.函数封装适合页面有多个tab切换,需要注意的在获取的li标签和span标签对象时,必须将对应div对象作为参数传入 ...

  2. js 时间函数封装

    html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  3. 兼容主流浏览器的js原生函数封装

    1.获取和修改垂直滚动条的滚动距离 //获取滚动条滚动距离function getScrollTop(){ var fromTop=document.documentElement.scrollTop ...

  4. js getByClass函数封装

    function getByClass(oParent, sClass) { var aEle=oParent.getElementsByTagName('*'); var aResult=[]; v ...

  5. js继承函数封装

    function extend(subClass,superClass) { //初始化一个中间空对象,为了转换主父类关系 var F = function() {}; F.prototype = s ...

  6. 封装一些常用的js工具函数-不定时更新(希望大家积极留言,反馈bug^_^)

    /*华丽------------------------------------------------------------------------------------------------ ...

  7. [妙味JS基础]第九课:定时器管理、函数封装

    知识点总结 函数封装 回调函数 实例:抖动函数 获取当前的位置 通过数组来实现,一正一负,直到恢复成0为止. 当前位置与数组中各值相加

  8. 前端总结·基础篇·JS(三)arguments、callee、call、apply、bind及函数封装和构造函数

    前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...

  9. Vue.js示例:文本编辑器。使用_.debounce()反抖动函数

    Markdown编辑器 https://cn.vuejs.org/v2/examples/index.html 新知识: Underscore.js库 用于弥补标准库,方便了JavaScript的编程 ...

随机推荐

  1. 每隔n步循环删除,返回最后一个元素

    题目:有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置.以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0-& ...

  2. C++ const和constexpr

    const expression , 常量表达式 , 在<C++ Primer>的定义:值不会改变并且在编译过程就能得到计算结果的表达式.   它要求两点:值不会改变,编译过程得到结果. ...

  3. MyBatis mapper文件中使用常量

    MyBatis mapper文件中使用常量 Java 开发中会经常写一些静态常量和静态方法,但是我们在写sql语句的时候会经常用到判断是否等于 //静态类 public class CommonCod ...

  4. LNMP环境配置(1)

    安装Nginx.MySQL.PHP 概念 LNMP是Linux Nginx MySQL PHP 的简写,把Nginx.MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的脚本语言. ...

  5. gulp常用插件之gulp-uglify使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-uglify这是一款使用UglifyJS缩小js文件. 更多使用文档请点击访问gulp-uglify工具官网. 安装 一键安装不多解释 ...

  6. 安装AB到CentOS(YUM)

    运行环境 系统版本:CentOS Linux release 7.3.1611 (Core) 软件版本:httpd-tools-2.4.6 硬件要求:无 安装过程 1.安装YUM-EPEL源 HTTP ...

  7. ASP.NET MVC中ActionResult的不同返回方式

    1.返回视图 return View();//返回方法名对应的视图 return View("aaa");//返回名称为aaa的视图 2.返回文本内容 return Content ...

  8. ArcGIS Server Manager 重置密码

    重置忘记的密码 ArcGIS 10.5 (Windows) | 其他版本 根据以下说明为标识存储中的用户或主站点管理员帐户重置密码. 为标识存储中的用户重置密码 可按照以下步骤为标识存储中的用户重置密 ...

  9. jQuery 滚动条和浏览器窗口事件

    滚动条事件 // 实时监听元素的滚动事件 $(window).scroll(function(){ ... }); $(window).scrollLefft(); // 获取滚动条位置 $(wind ...

  10. js监听textarea 内容的变化,并计算内容的长度c

    html代码如下:   <div class="customer-message">   <label for="customerMessage&quo ...