js 变速动画函数
//获取任意一个元素的任意一个属性的当前的值---当前属性的位置值
function getStyle(element, attr) {
return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0;
}
//变速动画函数封装增加任意多个属性和回调函数及层级还有透明度
//element元素 json对象 存储属性与值 fn为回调函数
function animate(element, json, fn) {
//清理定时器
clearInterval(element.timeid);
//设置定时器
element.timeid = setInterval(function () {
//假设全部到达目标
var f = true;
//循环去获取传入的数据
for (var i in json) {
//判断传入的值 是不是opacity
if (i == 'opacity') {
//获取当前opacity的值 并且放大100倍
var current = getStyle(element, i) * 100;
//把目标值也放大100倍
var target = json[i] * 100;
//移动的步数
var step = (target - current) / 10;
//判断是不是为0
step = step > 0 ? Math.ceil(step) : Math.floor(step);
//移动后的位置
current += step;
//移动元素属性
element.style[i] = current / 100;
//判断属性是不是zIndex
} else if (i == 'zIndex') {
//直接设置zIndex
element.style[i] = json[i];
} else {
//普通属性获取(转化成数字)
var current = parseInt(getStyle(element, i));
//目标属性值
var target = json[i]
//移动的步骤(渐变)
var step = (target - current) / 10;
//判断移动的值取整
step = step > 0 ? Math.ceil(step) : Math.floor(step);
//移动后的位置
current += step;
//移动元素
element.style[i] = current + 'px';
}
//只要有一个没达到目标就设置F为false
if (current != target) {
f = false;
}
//目标到达 清理定时器 判断有没有回调函数
if (f) {
clearInterval(element.timeid);
if (fn) {
fn();
}
}
}
console.log("目标:" + target + ",当前:" + current + ",每次的移动步数:" + step);
}, 20)
}
js 变速动画函数的更多相关文章
- js变速动画函数封装 回调函数及层级还有透明度
//点击按钮,改变宽度到达一个目标值,高度到达一个目标值 //获取任意一个元素的任意一个属性的当前的值---当前属性的位置值 function getStyle(element, attr) { re ...
- 从零开始学 Web 之 BOM(三)offset,scroll,变速动画函数
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 原生JS实现动画函数的封装
封装了一个JS方法,支持元素的基本动画:宽.高.透明度...等,也支持链式动画和同时运动. 获取元素的属性的函数并进行了兼容性处理: function getStyle(obj, attr) { if ...
- JS---封装缓动(变速)动画函数---增加多个任意多个属性
封装缓动动画函数---增加多个任意多个属性 在原来缓动动画函数,增加任意一个属性的基础上,做了如下改变 1. 原来function animate(element, attr, target),三个变 ...
- JS---封装缓动(变速)动画函数---增加任意一个属性
封装缓动(变速)动画---增加任意一个属性 1. 本来的变速动画函数,是获取特定的属性(之前案例是向右移动,所以获取的是left属性) 2. 现在改变为,获取任意一个属性,使其移动到指定的target ...
- JS---最终版本--封装缓动(变速)动画函数---增加任意多个属性&回调函数&层级&透明度
封装缓动(变速)动画函数---增加任意多个属性&回调函数&层级&透明度 相较之前的,增加了2个判断,第一个判断是不是透明度,第二个判断是不是zindex, 都不是,就只是普通属 ...
- JS---封装缓动(变速)动画函数---增加任意多个属性&增加回调函数
封装缓动(变速)动画函数---增加任意多个属性&增加回调函数 回掉函数fn,在所有元素到达目的位置后,判断是否传入一个函数,有就调用 if(fn){fn()}; 这样一次点击,产生多个动画 & ...
- js进阶 13 jquery动画函数有哪些
js进阶 13 jquery动画函数有哪些 一.总结 一句话总结: 二.jquery动画函数有哪些 原生JavaScript编写动画效果代码比较复杂,而且还需要考虑兼容性.通过jQuery,我们使用简 ...
- js 封装一个均速动画函数
//动画函数---任意一个元素移动到指定的目标位置 //element为元素 target为位置 function carToon(element, target) { //设置一个定时器让他循环去增 ...
随机推荐
- CSS背景相关属性
CSS样式可以精确控制HTML元素的背景.边框的样式和外观,也可以精确控制边框的线型和形状.其中,背景相关属性可以用于控制背景色.背景图片等属性.在控制背景图片的同时还可以控制背景图片的排列方式. 常 ...
- php编程--二叉树遍历算法实现
今天使用php来实现二叉树的遍历 创建的二叉树如下图所示 php代码如下所示: <?php class Node { public $value; public $child_l ...
- Visual Studio扩展与更新中插件被禁用,安装后无法使用
在Visual Studio中的扩展与更新中安装插件后,显示[禁用],重新安装后仍然不能使用,但是VS默认安装的扩展却可以正常使用. 这里需要注意下方显示“当前不允许加载每用户扩展”,点击“启用每用户 ...
- GDAL安装和使用
1.安装 下载源程序包 ,解压,运行以下三条命令 ./configure --prefix=~ make make install
- Win7下VC++6.0打开文件报错导致其崩溃的解决办法
原文:http://blog.csdn.net/wanghaihao_1/article/details/39005771 在Windows7下安装Visual C++ 6.0后,遇到一个致命的问题打 ...
- Python爬虫教程-16-破解js加密实例(有道在线翻译)
python爬虫教程-16-破解js加密实例(有道在线翻译) 在爬虫爬取网站的时候,经常遇到一些反爬虫技术,比如: 加cookie,身份验证UserAgent 图形验证,还有很难破解的滑动验证 js签 ...
- Spring返回json数据
第一种形式:使用注解@ResponseBody @RequestMapping(value = "/admin/jq", method = RequestMethod.GET) @ ...
- 一道算法题-从1到n整数中1出现的次数
1. 题目描述 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次. 2. 题目来源 第一次看到是在 ...
- xcode9 unity3d 新坑
1.metal调试会报错,要在edit scheme里关掉
- Maven高级应用--编译全模块包-dist包
1. 在需要生成dist包的模块级别,新建文件夹xxx-xxxx-dist 2. 进入目录,新建pom.xml,建议copy 3. dependencies节点,把要编译成全局包的应用引入进来 < ...