zoukankan      html  css  js  c++  java
  • js 运动框架

    /**
     * 使用offsetLeft,需注意margin的使用
     * offsetLeft = margin-left + left;
     * offsetWidth= padding + border + width;
     * 
     * @author Lonve
     */
    function getStyle(elem,attr){
        var result = null;
        result = elem.currentStyle?elem.currentStyle[attr]:getComputedStyle(elem,false)[attr];
        if(attr=="opacity"){
            return parseInt(parseFloat(result)*100);
        }
        return parseInt(result);
    }
    
    
    var timer = null;
    //匀速运动停止条件--->距离足够近
    function offsetMove1(offset){
        var oDiv = document.getElementById("oDiv");
        var speed = 0;
        speed = oDiv.offsetLeft < offset?10:-10;
        
        clearInterval(timer);
        timer = setInterval(function(){
            if(oDiv.offsetLeft >= offset){ //Math.abs(oDiv.offsetLeft - offset)<speed;
                clearInterval(timer);
            }else{
                oDiv.style.left = oDiv.offsetLeft + speed + "px";
            }
        },30)
    }
    
    //缓动运动条件 1.变化的运动速度,最后速度为零
    //问题:offsetLeft
    function offsetMove2(elem,offset){
        clearInterval(elem.timer);
        var speed = 0;
        elem.timer = setInterval(function(){
            speed = (offset - elem.offsetLeft)/8;
            speed = speed>0?Math.ceil(speed):Math.floor(speed);
            
            //是否到达到目标点
            if(elem.offsetLeft == offset){
                clearInterval(elem.timer);
            }else{
                elem.style.left = elem.offsetLeft + speed + "px";
            }
        },30)
    }
    
    //任意属性值
    //避免小数值    parseInt(0.3*100)
    function offsetMove3(elem,attr,offset){
        clearInterval(elem.timer);
        elem.timer = setInterval(function(){
            var curAttr = getStyle(elem,attr);            //当前属性值
            var speed = (offset - curAttr)/8;            //当前速度
            speed = speed>0?Math.ceil(speed):Math.floor(speed);
            
            if(offset == curAttr){
                clearInterval(elem.timer);
            }else{
                if(attr=="opacity"){
                    elem.style.filter = "alpha(opacity="+(curAttr +speed)+")";
                    elem.style.opacity= (curAttr + speed)/100;
                }else{
                    elem.style[attr] = (curAttr + speed) + "px";
                }
            }
        },30)
    }
    
    //链式运动
    function offsetMove4(elem,attr,offset,fn){
        clearInterval(elem.timer);
        elem.timer = setInterval(function(){
            var curAttr = getStyle(elem,attr);
            var speed   = (offset - curAttr)/8;
            speed = speed > 0? Math.ceil(speed):Math.floor(speed);
            
            if(offset == curAttr){
                clearInterval(elem.timer);
                if(fn){ fn(); }
            }else{
                if(attr=="opacity"){
                    elem.style.filter = "alpha(opacity:"+(curAttr+speed)+")";
                    elem.style.opacity= (curAttr+speed)/100;
                }else{
                    elem.style[attr] = curAttr + speed + "px";
                }
            }
        },30)
    }
    
    //多个属性同时变化
    function offsetMove5(elem,json,fn){
        var isStop = true;            //所有值都到达
        clearInterval(elem.timer);
        elem.timer = setInterval(function(){
            //历遍json属性
            for(var attr in json){
                //1.取当前与速度
                var offset  = json[attr];
                var curAttr = getStyle(elem,attr);
                var speed   = (offset - curAttr)/8;
                speed = speed > 0? Math.ceil(speed):Math.floor(speed);
                
                //2.检测停止
                if(offset!=curAttr){
                    isStop = false;
                }
                if(attr=="opacity"){
                    elem.style.filter = "alpha(opacity:"+(curAttr+speed)+")";
                    elem.style.opacity= (curAttr+speed)/100;
                }else{
                    elem.style[attr] = curAttr + speed + "px";
                }
            }
            //所有值都到达目标值,则停止
            if(isStop){
                clearInterval(elem.timer);
                if(fn){ fn(); }
            }
        },30);
    }
  • 相关阅读:
    重要网址(工具的使用)
    navicat的使用(测试库和正式库同步)以及用plsql改表字段属性
    linux
    linux一些基本命令
    LINUX的一些基本概念和操作
    LINUX简介
    Redis系统管理
    Redis之数据类型
    Redis的简介与安装
    论文阅读笔记(二十七)【AAAI2019】:A Bottom-Up Clustering Approach to Unsupervised Person Re-Identification
  • 原文地址:https://www.cnblogs.com/xiaoxiaosha/p/4118900.html
Copyright © 2011-2022 走看看