zoukankan      html  css  js  c++  java
  • 使用js编写一个简单的运动框架

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

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

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

    html:

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

         

    css:

    #div1{
    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);

        }

  • 相关阅读:
    C# 通过Attribute制作的一个消息拦截器
    Newtonsoft.Json高级用法
    这些年,我收集的JavaScript代码(一)
    Storm整体架构分析
    Worker的内部工作原理
    Storm源码分析
    Storm集群部署
    Storm 官方文档翻译 --- 消息的可靠性保障
    [转] 如何快速掌握一门新技术/语言/框架
    小狗钱钱读书笔记
  • 原文地址:https://www.cnblogs.com/bkyxiao5/p/7795585.html
Copyright © 2011-2022 走看看