js动画学习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js动画学习相关的知识,希望对你有一定的参考价值。
五、多物体变宽
这里面要注意由于物体变多了,需要给每个物体各配备一个定时器,否则如果只有一个定时器的话,当鼠标在不同物体之间快速滑动时,不同的物体就会出现争抢的现象。所以timer前要加obj.
1 function changeWidth(obj,target) {//元素,目标值
2 clearInterval(obj.timer);//清除定时器防止嵌套调用
3 obj.timer=setInterval(function () {//设置定时器
4 var speed=(target-obj.offsetWidth)/8;//定义缓冲速度,目标值减当前值
5 speed=speed>0?Math.ceil(speed):Math.floor(speed);//缓冲速度一定要取整
6 if (obj.offsetWidth==target) {//判断物体当前宽度和目标值的关系,如果达到目标清除定时器
7 clearInterval(obj.timer);
8 } else {
9 obj.style.width=obj.offsetWidth+speed+‘px‘;
10 }
11 },30)
12 }
举例:用3个li来举例:
1 <style type="text/css">
2 *{
3 margin: 0;
4 padding: 0;
5 }
6 ul li{
7 width: 200px;
8 height: 100px;
9 background: yellow;
10 margin-bottom: 20px;
11 }
12 </style>
1 <script type="text/javascript">
2 window.onload=function(){
3 var ob=document.getElementsByTagName(‘li‘);//一共3个li
4 for (var i = 0; i < ob.length; i++) {
5 ob[i].timer=null;//避免鼠标在他们仨快速移动时他们竞争定时器
6 ob[i].onmouseover=function(){
7 changeWidth(this,400);
8 }
9 ob[i].onmouseout=function(){
10 changeWidth(this,200);
11 }
12 }
13 }
14 </script>
this参数指的就是对象自己。和前几次不同的是这次的定时器清空要对每个li分别清空。
六、多物体变透明度
涉及到透明度就要注意浏览器的兼容性问题。还有,透明度的初始值不能像上一个单独物体透明度初值那样设置一个,多物体的透明度初始值要分别设置,每个物体都有初始值。
1 function changeOpacity(obj,speed,target) {
2 clearInterval(obj.timer);//清除定时器,避免嵌套调用
3 obj.timer=setInterval(function () {
4 if (obj.alpha==target) {//如果透明度达到目标值,清除定时器
5 clearInterval(obj.timer);
6 } else {//当前透明度加上透明度变化的速度
7 obj.alpha=obj.alpha+speed;
8 obj.style.filter=‘alpha(opacity:‘+obj.alpha+‘)‘;//IE浏览器
9 obj.style.opacity=obj.alpha/100;//火狐和谷歌
10 }
11 }, 30)
12 }
下面用几个div举例子:
1 <style type="text/css">
2 *{
3 margin: 0;
4 padding: 0;
5 }
6 div{
7 width: 200px;
8 height: 200px;
9 background: red;
10 margin: 10px;
11 float: left;
12 filter: alpha(opacity:30);/*filter滤镜:不透明度,IE浏览器*/
13 opacity: 0.3;/*火狐和谷歌*/
14 }
15 </style>
1 <div></div>
2 <div></div>
3 <div></div>
4 <script type="text/javascript">
5 window.onload=function(){
6 var ob=document.getElementsByTagName(‘div‘);
7 for (var i = 0; i < ob.length; i++) {
8 ob[i].timer=null;
9 ob[i].alpha=30;//每一个的透明度初值要分开设置
10 ob[i].onmouseover=function(){
11 changeOpacity(this,10,100);//从30变到100
12 }
13 ob[i].onmouseout=function(){
14 changeOpacity(this,-10,30);//从100变回30
15 }
16 }
17 }
18 </script>
以上是关于js动画学习的主要内容,如果未能解决你的问题,请参考以下文章
Android:将“ViewPager”动画从片段更改为片段