JS 抖动函数封装
原生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 抖动函数封装的更多相关文章
- JS——tab函数封装
1.为li标签添加index属性,这个属性正好就是span标签数组的index值 2.函数封装适合页面有多个tab切换,需要注意的在获取的li标签和span标签对象时,必须将对应div对象作为参数传入 ...
- js 时间函数封装
html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 兼容主流浏览器的js原生函数封装
1.获取和修改垂直滚动条的滚动距离 //获取滚动条滚动距离function getScrollTop(){ var fromTop=document.documentElement.scrollTop ...
- js getByClass函数封装
function getByClass(oParent, sClass) { var aEle=oParent.getElementsByTagName('*'); var aResult=[]; v ...
- js继承函数封装
function extend(subClass,superClass) { //初始化一个中间空对象,为了转换主父类关系 var F = function() {}; F.prototype = s ...
- 封装一些常用的js工具函数-不定时更新(希望大家积极留言,反馈bug^_^)
/*华丽------------------------------------------------------------------------------------------------ ...
- [妙味JS基础]第九课:定时器管理、函数封装
知识点总结 函数封装 回调函数 实例:抖动函数 获取当前的位置 通过数组来实现,一正一负,直到恢复成0为止. 当前位置与数组中各值相加
- 前端总结·基础篇·JS(三)arguments、callee、call、apply、bind及函数封装和构造函数
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...
- Vue.js示例:文本编辑器。使用_.debounce()反抖动函数
Markdown编辑器 https://cn.vuejs.org/v2/examples/index.html 新知识: Underscore.js库 用于弥补标准库,方便了JavaScript的编程 ...
随机推荐
- Uva1639(概率期望/对数处理避免丢失精度)
Uva1639 题意: 有两个盒子各有n个糖果(n<=200000),每天随机选择一个:选第一个盒子的概率是p(0 ≤ p ≤ 1),第二个盒子的概率为1-p,然后吃掉其中的一颗.直到有一天,随 ...
- C++->10.3.2-3,使用文件流类录入数据,并统计行数
题目:建立一个文本文件,从键盘录入一篇短文存放在该文件中短文由若干行构成,每行不超过80个字符,并统计行数. /* #include<iostream.h>#include<stdl ...
- 构造并判断二叉搜索树-js
class Node { constructor (val) { this.val = val this.left = this.right = undefined } } class Tree { ...
- node--处理一个增加上传操作和渲染页数条
一段学习的结束 我也不知道我这是在写些什么,只是觉得学完了一些东西,就是想把它记录 一下,这样我就可以知道我是学过这一块的,要多激励自己,^^O(∩∩)O哈哈~ 以下内容并不完全与标题匹配,不过以下内 ...
- Nginx配置Https指南
前言 本文是对Nginx配置SSL证书的总结. 申请SSL证书 你可以从任何证书提供商处申请证书,这里以阿里云为例. 打开阿里云SSL证书控制台,点击购买证书 选择免费型一年期的证书,点击立即购买 注 ...
- Exec msdb.dbo.sp_send_dbmail 参数详解(SQL Server 存储过程发邮件)
转载oriency755 发布于2012-12-04 11:34:45 阅读数 6870 收藏 sp_send_dbmail [ [ @profile_name = ] 'profile_name ...
- Mac下各种编程环境的配置问题(python java)
首先,去官网下载安装包.直接运行安装.安装完成后,启动器中会多两个应用程序IDLE和Python Launcher. 如果,你习惯在IDLE,直接运行即可. 但你在Terminal中运行python3 ...
- CF1254E Send Tree to Charlie
题意 讲不太清楚,看英文吧 cf 做法 在正式开始之前,我们先来玩一玩性质 首先考虑全\(0\)的情况,即本质不同的方案数 性质1:方案数并不为(n-1)!,即方案与结果不为双射 考虑一条边将树分为两 ...
- 安装Docker到Ubuntu(APT)
运行环境 系统版本:Ubuntu 16.04.5 LTS 软件版本:Docker-CE-18.09.5 硬件配置:无 安装过程 1.卸载旧版本 root@ubuntu:~# sudo apt-get ...
- java网页日期选择框对应的星期有误
· 我用java写了个星期查询代码,有的日期对有的日期错,求帮忙看看哪里有问题!! import java.util.*;public class Test1 {public static void ...