zoukankan      html  css  js  c++  java
  • 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>
    

    这边穿梭进入演示空间

  • 相关阅读:
    图的理论基础
    哈夫曼树(三)之 Java详解
    哈夫曼树(二)之 C++详解
    哈夫曼树(一)之 C语言详解
    基数排序
    桶排序
    归并排序
    堆排序
    选择排序
    希尔排序
  • 原文地址:https://www.cnblogs.com/xiaobaiv/p/9614303.html
Copyright © 2011-2022 走看看