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);
    }
  • 相关阅读:
    pytorch-卷积基本网络结构-提取网络参数-初始化网络参数
    pytorch-mnist神经网络训练
    python 面对对象 类(继承, 多态)
    注意机制CBAM
    python sqlalchemy 进行 mysql 数据库操作
    python pymysql 连接 mysql数据库进行操作
    mysql数据库基础
    python正则表达式解析(re)
    python 装饰器 (test = submit(test))
    对opencv读取的图片进行像素调整(1080, 1920) 1.cv2.VideoCapture(构造图片读取) 2.cv2.nameWindow(构建视频显示的窗口) 3.cv2.setWindowProperty(设置图片窗口的像素) 4.video_capture(对图片像素进行设置)
  • 原文地址:https://www.cnblogs.com/xcai/p/3226842.html
Copyright © 2011-2022 走看看