使用js编写一个简单的运动框架

下班后,,没事捣鼓捣鼓个人的小爱好。

首先,说明我的这个运动框架(css所有属性)也是常见的框架一种,健壮性并不是太好,对于新手学习倒是挺好,,若是大神,老司机请拐弯。

上来,我们先定义一个区块,然后在关联一个可以实时看到属性值发生变化值的标签。

html:

<body>
<div id = "div1">
</div>
<input type = "text" id = "txt1">
</input>
</body>

css:

#div1{
width:200px;
height:200px;
position:absolute;
top:200px;
left:0px;
background-color:yellow;
opacity:0.3;
filter:alpha(opacity:30);

}

js:

首先,我们先写页面加载函数,因为我不是把函数直接绑定到元素上面的方式

//编写加载函数

window.onload = function(){

var oDiv = document.getElementById(‘div1‘);

//对标签进行鼠标上移事件绑定

oDiv.onmouseover = function(){

startMove(this , ‘opacity‘,100);

};

//对标签进行鼠标离开事件绑定

oDiv.onmouseout = function(){

startMove(this, ‘opacity‘,30);

};

};

//编写得到样式函数,因为我们需要对元素的css进行动画

function getStyle(obj,attr){

if(obj.currentStyle){

return obj.currentStyle[attr];

}

else{

return getComputedStyle(obj, false)[attr];

};

};

//编写对标签元素进行控制的运动框架

function startMove(obj,attr,iTarget){

//上来先清除定时器,为什么自己可以试试看

clearInterval(obj.timer);

obj.timer = setInterval(function(){

//先定义一个获取当前值的容器

var cur = 0;
     //兼容透明度动画
     if(attr == ‘opacity‘){

cur = Math.round(parseFloat(getStyle(obj,attr))*100);

}

else{

cur = parseInt(getStyle(obj,attr));

}

//设置动画的步长
   //让动画具有缓冲效果

var speed = (ITarget-cur)/6;

speed = speed>0?Math.ceil(apeed):Math.floor(speed);

//当动画需要的步长设置好,之后我们需要进一步判断我们的目标值,来进一步确认动画的开始和结束

if(cur == iTarget){

//如果到达了目标值,那么我们就清除动画,释放这个定时器,解放内存

clearInterval(obj.timer);

}
    else{

//如果没有达到我们的目标值,那么我们需要这个动画一直持续下去,在这个动画的变化中,需要对透明度单独判断

if(attr == ‘opacity‘){

obj.style.opacity = (cur+speed)/100;

ob.style.filter = ‘alpha(opacity:‘+(cur+speed)+‘)‘;

document.getElementById(‘txt1‘).value = obj.style.opacity;

}

else{

obj.style[attr] = cur+speed+‘px‘;

document.getElementById(‘txt1‘).value = obj.style.opacity;

}

}

},30);

}

时间: 2024-08-28 02:22:20

使用js编写一个简单的运动框架的相关文章

js实现一个简单的MVVM框架

以前都是默默地看园子里的文章,猥琐的点赞,今天也分享一下自己用js实现的一个简单mvvm框架. 最初只做了自动绑定事件,后面又参考学习了vue,knouckout以及argular实现方式,以及结合自己做WPF的一些经验,增加了属性绑定,今天又稍微整理了下,完善了部分功能,把代码提交到了码云:https://gitee.com/zlj_fy/Simple-MVVM 先简单介绍下用法: 1 <form class="form-horizontal" role="form&

Python学习 - 编写一个简单的web框架(二)

在上一篇日志中已经讨论和实现了根据url执行相应应用,在我阅读了bottle.py官方文档后,按照bottle的设计重写一遍,主要借鉴大牛们的设计思想. 一个bottle.py的简单实例 来看看bottle是如何使用的,代码来自http://www.bottlepy.org/docs/0.12/index.html: from bottle import route, run, template @route('/hello/<name>') def index(name): return t

Python学习 - 编写一个简单的web框架(一)

自己动手写一个web框架,因为我是菜鸟,对于python的一些内建函数不是清楚,所以在写这篇文章之前需要一些python和WSGI的预备知识,这是一系列文章.这一篇只实现了如何处理url. 参考这篇文章:http://www.cnblogs.com/russellluo/p/3338616.html 预备知识 web框架主要是实现web服务器和web应用之间的交互.底层的网络协议主要有web服务器完成.譬如监听端口,填充报文等等. Python内建函数__iter__和__call__和WSGI

Swift语言编写一个简单的条形码扫描APP

swift语言编写一个简单的条形码扫描APP 原文地址:appcoda 在处理职员在杂货店的收银台排了很长的队伍,在机场帮助检查背包和旅客,或者在主要的食品供应商,协助处理乏味的存货清单过程,条形码扫描是很简单的处理工具.实际上,他们已经用了这个办法来解决消费者在智能购物,图书分类,等其他目的.因此,让我们来制作一个iPhone版本的条形码扫描工具吧! 对我们来说幸运的是,苹果已经制作了条形码扫描的程序,实现它是一件很简单的事情.我们将要研究进入AV Foundation框架的世界,组建APP,

编写一个简单的Jquery插件

1.实现内容 定义一个简单的jquery插件,alert传递进来的参数 2.插件js文件(jquery.showplugin.js) (function ($) { //定义插件中的方法 var methods = { //Object showName: function (name) { alert('Name:' + name); }, showAge: function (age) { alert('Age' + age); } }; //method方法名 $.fn.showplugi

【前端小小白的学习之路】----&gt;用JS编写一个函数,返回数组中重复出现过的元素

用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: var arr = [1, 2, 3, 1, 2, 3, 4, 5]; var getRepeat = function (arr) { var obj = {}; for (var i = 0, len = arr.length; i < len; i++) { if (obj[arr[i]] == undefined) { obj[arr[i]] = 1; } else { obj[arr[i]]++; } } for (var

JS实现一个简单的计算器

使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除.效果如上: 第一步: 创建构建运算函数count(). 第二步: 获取两个输入框中的值和获取选择框的值. 提示:document.getElementById( id名 ).value 获取或设置 id名的值. 第三步: 获取通过下拉框来选择的值来改变加减乘除的运算法则. 提示:使用switch判断运算法则. 第四步:  通过 = 按钮来调用创建的函数,得到结果. 注意: 使用parseInt

【C++】编写一个简单的类。包含构造函数,成员函数等。

<pre name="code" class="cpp">//编写一个简单的类.包含构造函数,成员函数等. #include <iostream> using namespace std; class Rec { public: Rec(int l,int w); int Area(); void Print(); private: int length,wide; }; Rec::Rec(int l,int w) { length=l; w

【C++】编写一个简单的函数实现重载。

//编写一个简单的函数实现重载. #include <iostream> using namespace std; int max(int a,int b) { return a>b?a:b; } int max(int a,int b,int c) { int x=max(a,b); return max(x,c); } double max(double a,double b) { return a>b?a:b; } int main() { cout<<"