zoukankan      html  css  js  c++  java
  • 运动函数封装及应用

    运动函数封装例子

    HTML

    <input type="button"  id="forward" value="向前" />
    <input type="button"  id="backward" value="向后" />
    <div class="div"></div>
    

    CSS

    *{
    	margin: 0;
    	padding: 0;
    }
    input{
    	margin-left: 20px;
    }
    .div{
    	 50px;
    	height: 50px;
    	background: red;
    	border: 1px solid #000;
    	margin-top: 10px;
    	position: absolute;
    	left: 20px;
    	top: 20px;
    }

    JS

    var forWard=document.getElementById("forward");
    var backWard=document.getElementById("backward");
    var oDiv=document.getElementsByTagName("div")[0];
    
    //向前进
    forWard.onclick=function(){
    	moveTo(oDiv,"top",500,10);
    }
    //向后退
    backWard.onclick=function(){
    	moveTo(oDiv,"top",20,10);
    }
    
    //obj:元素
    //attr:属性
    //target:运动的目标点
    //dir:增长值
    //endFn:完成运动后要执行的函数
    function moveTo(obj,attr,target,dir,endFn){
    	clearInterval(obj.timer);
    	//解决dir正负的问题:当原始值小于目标值时dir为正值,否则为负值
    	dir=parseInt(getStyle(obj,attr))<target?dir:-dir;
    	obj.timer=setInterval(function(){
    		var speed=parseInt(getStyle(obj,attr))+dir;//步长
    		//当元素到达目标点时,停在目标点停止运动
    		if(speed>target&&dir>0||speed<target&&dir<0){
    			speed=target;
    		}
    		obj.style[attr]=speed+"px";
    		
    		//清除定时器
    		if(speed==target){
    			clearInterval(obj.timer);
    			if(endFn){
    				endFn();
    			}
    		}
    	},30)
    }
    
    function getStyle(obj,attr){
    	if(obj.currentStyle){
    		return obj.currentStyle[attr];
    	}else{
    		return getComputedStyle(obj)[attr];
    	}
    }
    

      

  • 相关阅读:
    防雪崩利器:熔断器 Hystrix 的原理与使用
    SpringBoot返回结果为null或空值不显示处理方法
    Tomca原理分析之责任链
    TOMCAT原理详解及请求过程
    RocketMQ支持事务消息机制
    ubuntu 安装rocketmq
    Monkey安装与配置教程
    Monkey通过安装包获取包名
    git使用笔记
    Linux解压命令
  • 原文地址:https://www.cnblogs.com/yangxue72/p/7833138.html
Copyright © 2011-2022 走看看