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) { //设置一个定时器让他循环去增 ...
随机推荐
- MySQL基础数据类型
一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ...
- 移动端开发:iOS与Android平台上问题列表
要CSS伪类 :active 生效,只需要给 document 绑定 touchstart 或 touchend 事件 <style> a { color: #000; } a:activ ...
- JavaScript中实现DI的原理
什么是依赖注入 按照上面图的流程中我们可以知道我们需要实现这么几件事: 提供一个服务容器 为目标函数注册需要的依赖 获取目标函数注册的依赖项 通过依赖项来查询对应服务 将获取的依赖项传入目标函数 提供 ...
- Github上600多个iOS开源项目地址
将Github上600多个iOS开源项目进行分类并且有相应介绍,小伙伴们快来看呀 地址:http://github.ibireme.com/github/list/ios/
- 部署node.js的开发环境
1.进入Node.js的官方网站下载安装包: http:nodejs.org 2.安装后打开cmd的dos窗口(在path环境变量中查看到有nodejs说明安装成功): 3.运行node.
- Java Collections Framework知识结构目录
The core collection interfaces are the foundation of the Java Collections Framework. The Java Collec ...
- QT5.3.1 Quick 开发(二) 项目类型的选择
作为一个转行QT开发的新手,面对基于QML的开发时候 看到很多的项目类型感到很困惑,不知道应该怎么选择.如图: 经过研究发现QT widgets Application.QtQuick Applica ...
- 用两个栈实现队列(C++ 和 Python 实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 a ...
- sqlserver2008 insert语句性能
在sqlserver2008中“新建查询”,执行批量添加语句的执行时间: declare @i int ) begin INSERT INTO [xxx].[dbo].[北京万奇亚讯科技_QueryL ...
- Oracle案例04——TNS-12547: TNS:lost contact
Oracle数据库服务器DG从库重启后,无法完成数据同步,具体报错信息如下: 一.报错信息 alter log报错 ****************************************** ...