好程序员技术教程分享JavaScript运动框架

简介: 好程序员技术教程分享JavaScript运动框架,有需要的朋友可以参考下。JavaScript的运动,即让某元素的某些属性由一个值变到另一个值的过程。如让div的width属性由200px变到400px,opacity属性由0.3变到1.0,就是一个运动过程。

好程序员技术教程分享JavaScript运动框架,有需要的朋友可以参考下。

JavaScript的运动,即让某元素的某些属性由一个值变到另一个值的过程。如让div的width属性由200px变到400px,opacity属性由0.3变到1.0,就是一个运动过程。

实现运动要注意以下方面:

  1. 匀速运动(改变left、right、width、height、opacity等属性)
  2. 缓冲运动(速度是变化的)
  3. 多物体运动(注意所有东西都不能共用,否则容易产生冲突,如定时器timer)
  4. 获取任意属性值(封装一个getStyle函数)
  5. 链式运动(串行)
  6. 同时运动(并行,同时改变多个属性,需要使用 json)

封装好的getStyle函数,在下面的运动框架中会用到:
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr]; //针对IE
}
else{
return getComputedStyle(obj,false)[attr]; //针对Firefox
}
}

万能的运动框架:
function Move(obj,json,callback){
var flag=true; //标志变量,为true表示所有运动都到达目标值
clearInterval(obj.timer);
obj.timer=setInterval(function(){
flag=true;
for(var attr in json){
//获取当前值
var curr=0;
if(attr=='opacity'){
curr=Math.round(parseFloat(getStyle(obj,attr))*100); //parseFloat可解析字符串返回浮点数//round四舍五入
}
else{
curr=parseInt(getStyle(obj,attr)); //parseInt可解析字符串返回整数
}
//计算速度
var speed=(json[attr]-curr)/10;
speed=speed>0?Math.ceil(speed):Math.floor(speed);
//检测是否停止
if(curr!=json[attr]){
flag=false; //有一个属性未达目标值,就把flag变成false
}
if(attr=='opacity'){
obj.style.filter='alpha(opacity:'+(curr+speed)+')'; //针对IE
obj.style.opacity=(curr+speed)/100; //针对Firefox和Chrome
}
else{
obj.style[attr]=curr+speed+'px';
}
}
if(flag){
clearInterval(obj.timer);
if(callback){
callback();
}
}
},30);
}

调用上述运动框架的实例:
var div_icon=document.getElementById('icon');
var aList=div_icon.getElementsByTagName('a');
for(var i=0;i aList[i].onmouseover=function(){
var _this=this.getElementsByTagName('i')[0];
Move(_this,{top:-70,opacity:0},function(){
_this.style.top=30+'px';
Move(_this,{top:10,opacity:100});
});
}
}

好了,以上就是用JavaScript编写的运动框架。此外,jQuery中的animate函数也可以方便实现上述功能:
$(function(){
$('#icon a').mouseenter(function(){
$(this).find('i').animate({top:"-70px",opacity:"0"}, 300,function(){ //动画速度为300ms
$(this).css({top:"30px"});
$(this).animate({top:"10px",opacity:"1"}, 200);
});
})
})

相关文章
|
26天前
|
开发框架 JavaScript 安全
js开发:请解释什么是Express框架,以及它在项目中的作用。
Express是Node.js的Web开发框架,简化路由管理,支持HTTP请求处理。它采用中间件系统增强功能,如日志和错误处理,集成多种模板引擎(EJS、Jade、Pug)用于HTML渲染,并提供安全中间件提升应用安全性。其可扩展性允许选用合适插件扩展功能,加速开发进程。
|
3月前
|
存储 JavaScript 前端开发
写给不耐烦程序员的 JavaScript 指南(二)
写给不耐烦程序员的 JavaScript 指南(二)
|
3月前
|
前端开发 JavaScript 开发者
什么是 Angular 框架中的 Zone.js
什么是 Angular 框架中的 Zone.js
26 0
|
4月前
|
开发框架 JSON JavaScript
Node.js教程-express框架
Node.js教程-express框架
39 1
|
3月前
|
存储 JavaScript 前端开发
写给不耐烦程序员的 JavaScript 指南(四)
写给不耐烦程序员的 JavaScript 指南(四)
|
3月前
|
JavaScript 前端开发 测试技术
写给不耐烦程序员的 JavaScript 指南(三)
写给不耐烦程序员的 JavaScript 指南(三)
|
3月前
|
存储 JavaScript 前端开发
写给不耐烦程序员的 JavaScript 指南(一)
写给不耐烦程序员的 JavaScript 指南(一)
|
7天前
|
JavaScript 前端开发 API
框架分析(3)-Vue.js
框架分析(3)-Vue.js
|
1月前
|
前端开发 JavaScript 机器人
详解《基于 javascript 的流程图编辑框架LogicFlow
详解《基于 javascript 的流程图编辑框架LogicFlow
42 0
|
1月前
|
前端开发 JavaScript 开发者
编程笔记 html5&css&js 014 网页布局框架
编程笔记 html5&css&js 014 网页布局框架