日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

好程序员技术教程分享JavaScript运动框架

發(fā)布時間:2023/11/29 javascript 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 好程序员技术教程分享JavaScript运动框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

好程序員技術(shù)教程分享JavaScript運動框架,有需要的朋友可以參考下。

JavaScript的運動,即讓某元素的某些屬性由一個值變到另一個值的過程。如讓div的width屬性由200px變到400px,opacity屬性由0.3變到1.0,就是一個運動過程。

實現(xiàn)運動要注意以下方面:

  • 勻速運動(改變left、right、width、height、opacity等屬性)
  • 緩沖運動(速度是變化的)
  • 多物體運動(注意所有東西都不能共用,否則容易產(chǎn)生沖突,如定時器timer)
  • 獲取任意屬性值(封裝一個getStyle函數(shù))
  • 鏈?zhǔn)竭\動(串行)
  • 同時運動(并行,同時改變多個屬性,需要使用 json)
  • 封裝好的getStyle函數(shù),在下面的運動框架中會用到:
    function getStyle(obj,attr){
    if(obj.currentStyle){
    return obj.currentStyle[attr]; //針對IE
    }
    else{
    return getComputedStyle(obj,false)[attr]; //針對Firefox
    }
    }

    萬能的運動框架:
    function Move(obj,json,callback){
    var flag=true; //標(biāo)志變量,為true表示所有運動都到達目標(biāo)值
    clearInterval(obj.timer);
    obj.timer=setInterval(function(){
    flag=true;
    for(var attr in json){
    //獲取當(dāng)前值
    var curr=0;
    if(attr=='opacity'){
    curr=Math.round(parseFloat(getStyle(obj,attr))*100); //parseFloat可解析字符串返回浮點數(shù)//round四舍五入
    }
    else{
    curr=parseInt(getStyle(obj,attr)); //parseInt可解析字符串返回整數(shù)
    }
    //計算速度
    var speed=(json[attr]-curr)/10;
    speed=speed>0?Math.ceil(speed):Math.floor(speed);
    //檢測是否停止
    if(curr!=json[attr]){
    flag=false; //有一個屬性未達目標(biāo)值,就把flag變成false
    }
    if(attr=='opacity'){
    obj.style.filter='alpha(opacity:'+(curr+speed)+')'; //針對IE
    obj.style.opacity=(curr+speed)/100; //針對Firefox和Chrome
    }
    else{
    obj.style[attr]=curr+speed+'px';
    }
    }
    if(flag){
    clearInterval(obj.timer);
    if(callback){
    callback();
    }
    }
    },30);
    }

    調(diào)用上述運動框架的實例:
    var div_icon=document.getElementById('icon');
    var aList=div_icon.getElementsByTagName('a');
    for(var i=0;i aList[i].οnmοuseοver=function(){
    var _this=this.getElementsByTagName('i')[0];
    Move(_this,{top:-70,opacity:0},function(){
    _this.style.top=30+'px';
    Move(_this,{top:10,opacity:100});
    });
    }
    }

    好了,以上就是用JavaScript編寫的運動框架。此外,jQuery中的animate函數(shù)也可以方便實現(xiàn)上述功能:
    $(function(){
    $('#icon a').mouseenter(function(){
    $(this).find('i').animate({top:"-70px",opacity:"0"}, 300,function(){ //動畫速度為300ms
    $(this).css({top:"30px"});
    $(this).animate({top:"10px",opacity:"1"}, 200);
    });
    })
    })

    總結(jié)

    以上是生活随笔為你收集整理的好程序员技术教程分享JavaScript运动框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。