完美的js运动框架
//完美运动框架, 对象,json,函数
function move(obj,json,funEnd){
clearInterval(obj.timer);//清除定时器
obj.timer= setInterval(function(){//同时开好几个对象定时器
//声明一个变量,看下JSON中的属性点是已经达到==目标点是都已经完成
var flag=true;//设置一个初始值假设全部的属性都已经执行了完了
for(var attr in json){//使用for 循环,引出json中的各个目标点
var currentAttr=0;//声明一个变量,主要存储原始点
if(attr=="opacity"){//如果 属性==opacity,要另行考虑
//为了确保得到的数字是整数,所以使用Math.round,后面是转义,*100是因为opacity的值为小数
currentAttr=Math.round(parseFloat(getStyle(obj,attr))*100);
}
else {
currentAttr=parseInt(getStyle(obj,attr)); //正常情况下的转义并赋值
}
var speed=(json[attr]-currentAttr)/10; //声明变量,获取速度 速度=(目标点-原始点)/number
speed=speed>0?Math.ceil(speed):Math.floor(speed); //进行速度的取整 Math.ceil 向上取整 Math.floor 向下取整
if(json[attr]!=currentAttr)//如果 原始点!=目标点 ,不停止运动
{
flag=false;
}
// if(json[attr]==currentAttr){
// clearInterval(obj.timer);
// if(funEnd)funEnd();
// // if(funEnd){
// // funEnd();
// // }
// }
// else {
if(attr=="opacity"){//如果 目标点==opacity
// currentAttr+=speed;
obj.style.opacity=(currentAttr+speed)/100; //使用下面的代码求出 opacity
obj.style.filter='alpha(opacity:'+(currentAttr+speed)+')';
}
else {//使用下面的代码求出 [attr]也就是目标点的属性!
obj.style[attr]=currentAttr+speed+"px";
}
// }
} //当所有的运动都完成后,关闭定时器,若有函数,执行函数!
if(flag){//全部的属性已经执行
clearInterval(obj.timer);
if(funEnd)funEnd();
}
},30)
}
//获取非行间的属性,下面主要是为了兼容各个浏览器
function getStyle(obj,name){
if(obj.currentStyle){
return obj.currentStyle[name];
}
else {
return getComputedStyle(obj,false)[name];
}
}
function getClass(oParent,className){
var ele=oParent.getElementsByTagName("*");
var arr=[];
for(var i=0;i<ele.length;i++){
if(ele[i].className==className){
arr.push(ele[i]);
}
}
return arr;
}
完美的js运动框架的更多相关文章
- 带无缝滚动的轮播图(含JS运动框架)
今天学习了一下轮播图的写作,想到前一阵学过的无缝滚动得思想,所以就把轮播与滚动结合了一下.不过我的代码的神逻辑我自己都不敢恭维,在没网没参照的情况下,只能硬着头皮往下写,希望跟大家共勉吧. js运动框 ...
- js运动框架之一条乱跑的虫子
克隆与运动框架的联合应用 效果:点击元素块后,元素块开始随机的向任何方向移动,并附带一堆颜色随机的"尾巴".每个方向运动3秒后改变方向,同时笑脸变哭脸. 如图所示: 朝某个方向运动 ...
- js运动框架逐渐递进版
运动,其实就是在一段时间内改变left.right.width.height.opactiy的值,到达目的地之后停止. 现在按照以下步骤来进行我们的运动框架的封装: 匀速运动. 缓冲运动. 多物体运动 ...
- js 运动框架及实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js运动框架之掉落的扑克牌(重心、弹起效果)
玩过电脑自带纸牌游戏的同志们应该都知道,游戏过关后扑克牌会依次从上空掉落,落下后又弹起,直至"滚出"屏幕. 效果如图: 这个案例的具体效果就是:点击开始运动,纸牌会从右上角掉 ...
- js运动框架完成块的宽高透明度及颜色的渐变
了解了运动框架完成块元素的宽高和透明度的变化的原理,我想着写一个颜色的变化来练习一下,不想写了很长时间才写出来,跟各位分享一下. 颜色的变化是通过三元素渐变的方式完成的,通过构造json,使当前的颜色 ...
- js运动框架 step by step
开启setInterval定时器之前,请先清除之前的定时器 window.onload = function() { var btn = document.getElementById('btn'); ...
- JS运动框架的封装过程(一)
给大家出一道题,从起点A走到目的地B,一共用了1000毫秒,每一次是30毫秒,请问你在这里面得到了哪些信息? 信息有哪些呢? 第一个,总时长是:1000毫秒 第二个,多久时间走一次?30毫秒 第三个, ...
- js 运动框架-轻量级
具体代码如下: function move(obj,json,sv,fnEnd){ //CSS样式值 function getStyle(obj,attr){ if(obj.currentStyle) ...
随机推荐
- 主备(keepalived+haproxy)
系统:centos6.9 mini 主机名 ip 虚拟ip kh1 192.168.126.210 kh2 192. ...
- (转)Elasticsearch 5 Ik+pinyin分词配置详解
今天以这篇文章结束同城旅游网的面试,正好面试官也问到站内检索,可以尝试一下这篇文章介绍的方法.Elasticsearch 5 Ik+pinyin分词配置详解
- 微信小程序项目踩过的几个坑
一.前言 近期,开始了一段辛酸的还未开始就已经结束的"创业"(参见我的第二次创业,以梦为马,莫负韶华).大体上是开发了一款微信小程序,关于创业这件事情就不细说了,本文主要介绍一下开 ...
- Redis服务器启动之后3个警告信息的解决方案
今天是年前最后一篇文章了,不想写太多的东西,就写一些有关Redis相关问题的解决方案.当我们启动了Redis服务器之后,会看到3个警告,如果没看到,那是很好的,但是我看到了.看到了就不能不管,所以就好 ...
- Kolakoski序列产生器
/* 本程序说明: Kolakoski序列是一个仅由1和2组成的无限数列,是一种通过“自描述”来定义的数列. 他的前几项为1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1 ...
- java windows自动化-mail自动发邮件
本文旨在让测试人员了解如何发邮件 发邮件的话,最简单的事是直接手动发邮件,但是在自动化测试中,应做到让机器或者代码来自动发送邮件,笔者大概了解以下几种方法,总有一款口味适合你:1java代码来做下面即 ...
- jquary 单选,多选,select 获取和设置值 jquary自定义函数
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" ...
- C++ Primer Plus阅读笔记
cin进行文本输入 使用cin获取字符的基本方式 char ch; cin >> ch; cin读取char值时将忽略空格和换行符.此外,发送给cin的输入被缓冲.这意味着只有在用户按下回 ...
- CentOS7 安装 Tomcat
安装 JDK Tomcat 的安装依赖 JDK,在安装 Tomcat 之前需要先安装 Java JDK.输入命令 java -version,如果显示 JDK 版本,证明已经安装了 JDK java ...
- hdu4148 Length of S(n)
Length of S(n) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...