JS基础-特效篇-单属性动画

1.目的:针对一个属性,属性值改变动画
2.函数:

/*
    *@description:[缓动动画函数]
    *@param:{String}[attr]
    *@param:{Object}[eleObj]
    *@param:{Number}[target]
    *@date:2021/5/11
    */
    function buffer(eleObj, attr, target) {
    	//清除定时器
        clearInterval(eleObj.timer);
        //定义变量
        var speed = 0, begin;
        //设置定时器
        eleObj.timer = setInterval(function () {
        	//获取要做动画属性的初始值
            begin = parseInt(myTool.getStyleAttr(eleObj, attr));
            //缓动公式求出步长
            speed = (target - begin) * 0.2;
            speed = (target > begin) ? Math.ceil(speed) : Math.floor(speed);
            //动起来
            eleObj.style[attr] = begin + speed + 'px';
            eleObj.innerText = begin; //这句可以去掉
            if (begin === target) {
                clearInterval(eleObj.timer);
            }
        }, 20)
    }

3.调用:

<button id="btn">向左走</button>
<button id="btn1">改变高度</button>
<div id="box"></div>
<script src="MyTool/MyTool.js"></script>
buffer(box, 'height', 600);

4.封装的函数

var myTool = {
    $: function (id) {
        return typeof id === "string" ? document.getElementById(id) : null;
    },
    scroll: function () {
        if (window.pageYOffset !== null) { //最新的浏览器
            return {
                //里面相当于字面量对象或JSON对象,是有区别的
                "top": window.pageYOffset,
                "left": window.pageXOffset
            }
        } else if (document.compatMode === 'CSS1Compat') {  //W3C标准
            return {
                "top": document.documentElement.scrollTop,
                "left": document.documentElement.scrollLeft
            }
        }
        return {
            "top": document.body.scrollTop,
            "left": document.body.scrollLeft
        }
    },
    show: function (ele) {
        ele.style.display = 'block';
    },
    hide: function (ele) {
        ele.style.display = 'none';
    },
    client: function () {
        if (window.innerWidth !== null) { //最新的浏览器
            return {
                //里面相当于字面量对象或JSON对象,是有区别的
                "width": window.innerWidth,
                "height": window.innerHeight
            }
        } else if (document.compatMode === 'CSS1Compat') {  //W3C标准
            return {
                "width": document.documentElement.clientWidth,
                "height": document.documentElement.clientHeight
            }
        }
        return {
            "width": document.body.scrollWidth,
            "height": document.body.scrollHeight
        }
    },
    /*阻止冒泡*/
    stopBubble: function (eve) {
        if (eve && eve.stopPropagation) {
            eve.stopPropagation();
        } else {   //IE678
            eve.cancelBubble = true;
        }
    },
    //获取选中文本
    selectText: function () {
        if (window.getSelection) {
            return window.getSelection().toString();
        } else {
            return document.selection.createRange().text;
        }
    },
    //获取点击对象
    targetId: function (ele) {
        return ele.target ? ele.target.id : ele.srcElement.id;
    },
    //获取改变颜色值
    changeCssStyle: function (eleObj, attr, value) {
        eleObj.style[attr] = value;
    },
    //获取CSS样式值
    getStyleAttr: function (obj, attr) {
        if (obj.currentStyle) {
            return obj.currentStyle[attr];
        } else {
            return window.getComputedStyle(obj, null)[attr];
        }
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值