zoukankan      html  css  js  c++  java
  • tools.js

    //1.简单动画
    /*尝试构造一个可以执行简单动画的函数
     * -参数:
     *     obj:要执行动画的对象
     *     attr:要执行动画的样式,如left top width height
     *     target:执行动画的目标位置
     *     speed:移动的速度(正数右移,负数左移)
     *     callback:回调函数,这个函数会在动画执行完毕以后执行
     */
    //move(imgList,"left",-320*index,20,function(){
    //                
    //            });
    function move(obj, attr, target, speed, callback) {
        //关闭上一个定时器,防止加速
        clearInterval(obj.timer);
        //获取元素目前的位置
        var current = parseInt(getStyle(obj, attr));
        //判断速度的正负
        //如果从0到800移动,则speed为正,800到0移动,为负
        if(current > target) {
            //此时speed为负
            speed = -speed;
        }
    
        //-开启一个定时器,来执行动画效果
        obj.timer = setInterval(function() {
            //获取目标原来的left值
            var oldValue = parseInt(getStyle(obj, attr));
            //在旧值的基础上增加
            var newValue = oldValue + speed;
    
            if((speed < 0 && newValue < target) || (speed > 0 && newValue > target)) {
                newValue = target;
            }
    
            //将新值设置给目标
            obj.style[attr] = newValue + "px";
    
            if(newValue == target) {
                //到达目标值,关闭定时器
                clearInterval(obj.timer);
                //动画执行完毕,调用回调函数
                callback && callback();
            }
        }, 30);
    }
    
    
    //2.class的操作
    /*定义一个元素,来获取指定元素的当前的样式
     * -参数:
     *     obj:要获取样式的元素
     *     name:要获取的样式名
     */
    //getStyle(box, "d2");
    function getStyle(obj, name) {
        return getComputedStyle(obj, null)[name];
    }
    
    /*定一个函数来用来想一个元素中动态添加指定的class属性值
             * -参数:
             *         obj 目标元素
             *         cn 要添加的class值
             */
            function addClass(obj,cn){
                //判断,防止cn有了还执行函数多次添加
                if(!hasClass(obj,cn)){
                    obj.className += " "+cn;
                }
                
            }
            /*判断一个元素中是否含有指定的class属性值
             * 如果有,返回true
             */
            function hasClass(obj,cn){
                //判断obj中有没有cn class,正则表达式
                var reg=new RegExp("\b"+cn+"\b");
                
                return reg.test(obj.className);
            }
            /*删除一个元素中的指定class属性值
             */
            function removeClass(obj,cn){
                //创建一个正则表达式
                var reg=new RegExp("\b"+cn+"\b");
                //删除跟正则式符合的class
                obj.className=obj.className.replace(reg," ");
            }
            /*切换一个class
             * 如果元素中有该class,则删除;没有,则添加
             */
            function toggleClass(obj,cn){
                if(hasClass(obj,cn)){
                    removeClass(obj,cn);
                }else{
                    addClass(obj,cn);
                }
            }
        
  • 相关阅读:
    每天一个linux命令(6):mv命令
    每天一个linux命令(5):rm 命令
    每天一个linux命令(4):mkdir命令
    每天一个linux命令(3):pwd命令
    每天一个linux命令(2):cd命令
    每天一个linux命令(1):ls命令
    Linux下svn命令详解
    Linux下SVN安装配置
    SVN命令使用详解
    分布式Web服务器架构
  • 原文地址:https://www.cnblogs.com/wangdongwei/p/11331514.html
Copyright © 2011-2022 走看看