变速动画函数封装增加任意多个属性、透明度和层级

//计算后的样式属性---- 一个元素的任意的一个样式属性值function getStyle(element,attr) {    //判断这个浏览器是否支持这个方法    return window.getComputedStyle?window.getComputedStyle(element,null)[attr]:element.currentStyle[attr];}//匀速动画function animate(element,json,fn) {  //element--元素   attr--属性名字   target--目标位置    //清理定时器    clearInterval(element.timeId);    element.timeId=setInterval(function () {        var flag=true;//默认,假设,全部到达目标        for(var attr in json){            //判断这个属性中attr中是不是opacity            if (attr=="opacity"){                //获取元素的当前的透明度,当前的透明度放大100倍                var current=getStyle(element,attr)*100;                //目标的透明度放大100倍                var target=json[attr]*100;                var step=(target-current)/10;                step=step>0?Math.ceil(step):Math.floor(step);                current+=step;                element.style[attr]=current/100;            }else if(attr=="zIndex"){   //判断这个属性attr中是不是zIndex                //层级改变就是直接改变这个属性的值                element.style[attr]=json[attr];            }else {                //获取元素当前位置                var current=parseInt(getStyle(element,attr));//数字类型                //当前的属性对应的目标值                var target=json[attr];                //移动的步数                var step=(target-current)/10;                step=step>0?Math.ceil(step):Math.floor(step);                current+=step;                element.style[attr]=current+"px";            }            //判断是否到达目标            if(current!=target){                flag=false;            }        }        if(flag){            //清理计时器            clearInterval(element.timeId);            //回调函数,所有属性达到目标后才能使用            if(fn){                fn();            }        }

原文地址:https://www.cnblogs.com/lujieting/p/10055298.html

时间: 2024-10-19 07:46:40

变速动画函数封装增加任意多个属性、透明度和层级的相关文章

变速动画函数封装增加任意多个属性值

//计算后的样式属性---- 一个元素的任意的一个样式属性值function getStyle(element,attr) { //判断这个浏览器是否支持这个方法 return window.getComputedStyle?window.getComputedStyle(element,null)[attr]:element.currentStyle[attr];}//匀速动画function animate(element,json,fn) { //element--元素 attr--属性名

变速动画函数封装增加任意一个属性

//计算后的样式属性---- 一个元素的任意的一个样式属性值function getStyle(element,attr) { //判断这个浏览器是否支持这个方法 return window.getComputedStyle?window.getComputedStyle(element,null)[attr]:element.currentStyle[attr];}//匀速动画function animate(element,attr,target) { //element--元素 attr-

JavaScript变速动画函数封装添加任意多个属性

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } div { width: 200px; height: 100px; background-color: pink; position: absolute

JavaScript变速动画函数封装添加任意多个属性加回调函数还有透明度

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } div { width: 200px; height: 100px; background-color: purple; position: absolu

js 变速动画函数

//获取任意一个元素的任意一个属性的当前的值---当前属性的位置值 function getStyle(element, attr) { return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0; } //变速动画函数封装增加任意多个属性和回调函数及层级还有透明度 //element元素 json对象 存储属性与值 fn为回调函数

JS---封装缓动(变速)动画函数---增加任意多个属性&amp;增加回调函数

封装缓动(变速)动画函数---增加任意多个属性&增加回调函数 回掉函数fn,在所有元素到达目的位置后,判断是否传入一个函数,有就调用 if(fn){fn()}; 这样一次点击,产生多个动画 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <style> *

从零开始学 Web 之 BOM(三)offset,scroll,变速动画函数

大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/ 在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目.现在就让我们一起进入 Web 前端学习的冒险之旅吧! 一.直接使用 do

移动端滑屏全应用【一】cssHandler操作基础动画函数封装

前言: 大家都知道,在移动端进行操作结点移动时,我们都会使用操作transform来代替top等用以提高性能,必要的时候还可开启3d加速.我们都会使用getComputedStyle来获取结点的最终样式,但使用getComputedStyle来获取transform时我们获取到的是一个矩阵值,而且是无法通过设置矩阵值反向设置transform的效果的.如下: body.style.WebkitTransform = 'translateY(50px)' getComputedStyle(body

javascript动画函数封装(升级版)

//把 任意对象 的 任意数值属性 改变为 任意的目标值 function animate(obj, json, fn) { clearInterval(obj.timer); obj.timer = setInterval(function () { var flag = true; for (var k in json) { if (k === "opacity") {//opacity要特殊处理 //opacity没有单位 参与运算自动转换成数值 所以不用parsetInt //