zoukankan      html  css  js  c++  java
  • 运动第三课时

    今天吃得很饱。会长生日快乐:)

    以前写文章都是解释加上代码,现在偷个懒,直接把解释写在代码注释里了,自己感觉蛮方便的。今天花了很长时间总结这个,都用来找BUG了。。。

    宽度变长的div---初级版

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>div变宽</title>
     6 <style>
     7     div{width:100px;height:30px;background:#99CC66;margin-bottom:20px;}
     8 </style>
     9 <script>
    10     window.onload=function(){
    11         var oDiv=document.getElementById('div1');
    12         oDiv.onmouseover=function(){
    13             startMove(300);
    14         };
    15         oDiv.onmouseout=function(){
    16             startMove(100);
    17         }
    18     };
    19     
    20     var timer=null;
    21     clearInterval(timer);
    22     function startMove(iTarget){
    23         var oDiv=document.getElementById('div1');
    24         var iSpeed=(iTarget-oDiv.offsetWidth)/8;
    25         iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
    26         timer=setInterval(function(){
    27             if(oDiv.offsetWidth==iTarget){
    28                 clearInterval(timer);
    29             }
    30             else{
    31                 oDiv.style.width=oDiv.offsetWidth+iSpeed+'px';
    32             }
    33         },30)
    34     };
    35 </script>
    36 </head>
    37 
    38 <body>
    39 <div id="div1"></div>
    40 </body>
    41 </html>

    宽度变长的div---改进版

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>div变宽改进版</title>
     6 <style>
     7     div{width:100px;height:30px;background:#00FFFF;margin-top:10px;}
     8 </style>
     9 <script type="text/javascript">
    10     window.onload=function(){
    11         var oDiv=document.getElementsByTagName('div');
    12         var i=0;
    13         for(i=0;i<oDiv.length;i++){        //通过循环来获取每一个事件
    14             oDiv[i]=null;
    15             oDiv[i]=onmouseover=function(){
    16                 startMove(this,200);
    17             }
    18             oDiv[i]=onmouseout=function(){
    19                 startMove(this,100)
    20             }
    21         }
    22     }
    23     
    24     function startMove(obj,iTarget){        //传递两个参数
    25         clearInterval(obj.timer);           //代表当前选中的那个div的事件
    26         obj.timer=setInterval(function(){
    27             var iSpeed=(iTarget-obj.offsetWidth)/8;
    28             iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
    29             if(iTarget==obj.offsetWidth)
    30             {
    31                 clearInterval(obj.timer);
    32             }
    33             else
    34             {
    35                 obj.style.width=obj.offsetWidth+iSpeed+'px';//火狐提示这个位置没有定义,奇了怪了,怎么会没有定义呢,天理不容啊
    36             }
    37         },30)
    38     }
    39 </script>
    40 </head>
    41 
    42 <body>
    43 <div></div>
    44 <div></div>
    45 <div></div>
    46 </body>
    47 </html>

     多个div的淡入淡出

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>多个div淡入淡出</title>
     6 <style>
     7 div{width:100px;height:100px;background:#0000FF;float:left;margin-left:20px;opacity:0.3;}
     8 </style>
     9 <script>
    10 window.onload=function(){
    11     var aDiv=document.getElementsByTagName('div');
    12     var i=0;
    13     for(i=0;i<aDiv.length;i++){
    14         aDiv[i].alpha=30;      //初始化不透明度
    15         aDiv[i].onmouseover=function(){
    16             startMove(this,100)
    17         }
    18         aDiv[i].onmouseout=function(){
    19             startMove(this,30)
    20         }
    21     }
    22 }
    23     function startMove(obj,iTarget){
    24         clearInterval(obj.timer);
    25         obj.timer=setInterval(function(){
    26             var iSpeed=(iTarget-obj.alpha)/8;
    27             iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
    28             if(obj.alpha==iTarget){
    29                 clearInterval(obj.timer);
    30             }
    31             else{
    32                 obj.alpha+=iSpeed;          //多个元素的运动,需要把事件确定到每个元素,不能有公用的
    33                 obj.style.filter='alpha(opacity:'+obj.alpha+')';
    34                 obj.style.opacity=obj.alpha/100;
    35             }
    36         },30);
    37     }
    38 </script>
    39 </head>
    40 
    41 <body>
    42 <div></div>
    43 <div></div>
    44 <div></div>
    45 <div></div>
    46 <div></div>
    47 <div></div>
    48 <div></div>
    49 <div></div>
    50 <div></div>
    51 <div></div>
    52 </body>
    53 </html>

    offsetWidth-----在运动过程中会出现BUG,offsetWidth包括border,不懂的可以参见上一篇文章的图

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>offsetWidth</title>
     6 <style>
     7     #div1{width:100px;height:100px;background:#0000FF;border:2px solid #00FF00;}
     8 </style>
     9 <script>
    10     setInterval(
    11     function(){
    12     var oDiv=document.getElementById('div1');
    13     oDiv.style.width=oDiv.offsetWidth-1+'px';},30)    、//当使用这个属性的时候,div会向右伸展,反而不会向左减小;主要是因为div的border影响了。Div.style.width=oDiv.offsetWidth-1;例如:100px=102-1=101px,div.width增加了一个像素(第一次)-----101px=103-1=102px,div.width又增加了一个像素(第二次)...以此类推
    14 </script>
    15 </head>
    16 
    17 <body>
    18 <div id="div1"></div>
    19 </body>
    20 </html>

    使用getStyle函数

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>offsetWidth</title>
     6 <style>
     7     #div1{width:100px;height:100px;background:#0000FF;border:2px solid #00FF00;}
     8 </style>
     9 <script>
    10     function getStyle(obj,attr){      //使用该函数获取非行间样式
    11         if(obj.currentStyle){
    12             return obj.currentStyle[attr];
    13         }
    14         else{
    15             return getComputedStyle(obj,false)[attr];
    16         }
    17     }
    18     setInterval(
    19     function(){
    20     var oDiv=document.getElementById('div1');
    21     oDiv.style.width=parseInt(getStyle(oDiv,'width'))-1+'px';//对行间样式没有作用
    22     },30)
    23 </script>
    24 </head>
    25 
    26 <body>
    27 <div id="div1"></div>
    28 </body>
    29 </html>

     任意值的变化

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>无标题文档</title>
     6 <style>
     7     div{width:100px;height:20px;background:#666666;border:2px solid black;margin-top:20px;}
     8 </style>
     9 <script>
    10     window.onload=function(){
    11         var aDiv=document.getElementsByTagName('div');
    12         var i=0;
    13         for(i=0;i<aDiv.length;i++){
    14             aDiv[i].timer=null;
    15             aDiv[i].onmouseover=function(){
    16                 startMove(this,200);
    17             }
    18             aDiv[i].onmouseout=function(){
    19                 startMove(this,100);
    20             }
    21         }
    22     };
    23 
    24 
    25     function getStyle(obj,attr){
    26         if(obj.currentStyle){
    27             return obj.currentStyle[attr];
    28         }
    29         else{
    30             return getComputed(obj,false)[attr];
    31         }
    32     };
    33     
    34     function startMove(obj,iTarget){
    35         clearInterval(obj.timer);
    36         obj.timer=setInterval(function(){
    37             var iSpeed=(iTarget-obj.offsetWidth)/8;
    38             iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
    39             if(obj.offsetWidth==iTarget){
    40                 clearInterval(obj.timer);
    41             }
    42             else{
    43                 obj.style.width=obj.offsetWidth+iSpeed+'px';
    44             }
    45             
    46             
    47         },30)
    48     };
    49 </script>
    50 </head>
    51 
    52 <body>
    53 <div></div>
    54 <div></div>
    55 <div></div>
    56 </body>
    57 </html>

    任意值2

     1 function getStyle(obj,attr){
     2         if(obj.currentStyle){
     3             return obj.currentStyle[attr];
     4         }
     5         else{
     6             return getComputedStyle(obj,false)[attr];
     7         }
     8     };
     9     
    10     function startMove(obj,iTarget){
    11         clearInterval(obj.timer);
    12         obj.timer=setInterval(function(){
    13             var iCurrent=parseInt(getStyle(obj,'width'));    //获取样式并且取整
    14             var iSpeed=(iTarget-iCurrent)/8;
    15             iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
    16             if(iCurrent==iTarget){
    17                 clearInterval(obj.timer);
    18             }
    19             else{
    20                 obj.style.width=iCurrent+iSpeed+'px';
    21             }
    22             
    23             
    24         },30)
    25     };

    任意值3

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <style>
     5 div {width:100px; height:50px; font-size:12px; background:red; margin-top:50px; border:2px solid black;}
     6 </style>
     7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     8 <title>无标题文档</title>
     9 <script type="text/javascript">
    10 window.onload=function()
    11 {
    12     var aDiv=document.getElementsByTagName('div');
    13     
    14     aDiv[0].onclick=function(){        //对应下面的第一个图片
    15         startMove(this,'width',200)
    16     };
    17     aDiv[1].onclick=function(){        //对应第二幅图
    18         startMove(this,'height',200)
    19     };
    20     aDiv[2].onclick=function(){        //对应第三幅图
    21         startMove(this,'fontSize',40)     //S要大写
    22     };
    23     aDiv[3].onclick=function(){        //对应第四幅图
    24         startMove(this,'borderWidth',20)   //注意W要大写
    25     };
    26 };
    27 
    28 function getStyle(obj, attr)
    29 {
    30     if(obj.currentStyle)
    31     {
    32         return obj.currentStyle[attr];
    33     }
    34     else
    35     {
    36         return getComputedStyle(obj, false)[attr];
    37     }
    38 }
    39 
    40 function startMove(obj, attr, iTarget)
    41 {
    42     clearInterval(obj.timer);
    43     obj.timer=setInterval(function (){
    44         var iCur=parseInt(getStyle(obj, attr));
    45         var iSpeed=(iTarget-iCur)/8;
    46         iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
    47         
    48         if(iCur==iTarget)
    49         {
    50             clearInterval(obj.timer);
    51         }
    52         else
    53         {
    54             obj.style[attr]=iCur+iSpeed+'px';
    55         }
    56     }, 30)
    57 }
    58 </script>
    59 </head>
    60 
    61 <body>
    62 <div></div>
    63 <div></div>
    64 <div>
    65 123
    66 </div>
    67 <div></div>
    68 </body>
    69 </html>

    效果图

    暂时到这儿,欢迎纠错:)

  • 相关阅读:
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    冒泡排序和选择排序
  • 原文地址:https://www.cnblogs.com/paxster/p/3105842.html
Copyright © 2011-2022 走看看