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>

    效果图

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

  • 相关阅读:
    FSLIB.NETWORK 简易使用指南
    在CentOS上安装owncloud企业私有云过程
    用于ViEmu的重置为试用状态的Python脚本
    Microsoft.Office.Interop.Excel 报错
    FineUIMvc表格数据库分页,使用CYQ.Data组件
    如何在已有项目中引入FineUIMvc
    按键精灵-常用脚本命令汇集
    微信分享代码
    [教程] 【原创】媒体扫描耗电的彻底解决办法(申精)
    Less学习笔记
  • 原文地址:https://www.cnblogs.com/paxster/p/3105842.html
Copyright © 2011-2022 走看看