亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JS動畫效果

vivian Web前端工程師
難度初級
時長 2小時 8分
學習人數
綜合評分9.60
537人評價 查看評價
9.8 內容實用
9.6 簡潔易懂
9.4 邏輯清晰
  • 獲取樣式和轉換字符取整 oDiv.style.width 當width:200px;等樣式寫在樣式表中時,無法直接獲得oDiv.style.xxx,(寫在內聯樣式中才表示該元素擁有style屬性才能得到oDiv.style.xxx),所以要獲取樣式,需要通過函數: function getStyle(obj,attr){ if (obj.currentStyle) { return obj.currentStyle[attr];//IE瀏覽器 } else{ return getComputedStyle(obj,false)[attr]; }; } parseInt(getStyle(obj,'width')) ———————— oDiv.style.width=oDiv.style.width-1+"px";是錯誤的,因為oDiv.style.width得到的是字符串(如200px),不能直接和-1+"px"連接起來成為新的值,需要用parseInt()方法: oDiv.style.width=parseInt(oDiv.style.width)-1+"px";
    查看全部
    0 采集 收起 來源:獲取樣式

    2018-03-22

  • 多物體運動 for循環來為每一個TagNameList[i]添加事件 并添加屬性來區分各自的定時器(用于取消) 利用參數中的this來指定所選擇的當前元素 多物體不要共用一個值,在對象上定義一個單獨的屬性保持值 存在多項共用一個值,并且這個值會發生改變時,最好單獨給賦值,避免出現爭用的情況。 <script> window.onload=function(){ var aLi=document.getElementsByTagName('li'); for(var i=0;i<aLi.length;i++){ // 給每一個li設置一個timer,才不會致使他們去搶timer aLi[i].timer=null; aLi[i].onmouseover=function(){ startMove(this,400); }; aLi[i].onmouseout=function(){ startMove(this,200) } } var oDivLi=document.getElementsByTagName('div'); for(var j=0;j<oDivLi.length;j++){ oDivLi[j].timer=null; oDivLi[j].alpha=30; oDivLi[j].onmouseover=function(){ startMove1(this,100); }; oDivLi[j].onmouseout=function(){ startMove1(this,30); } } };
    查看全部
    0 采集 收起 來源:JS多物體動畫

    2018-03-22

  • 緩沖運動: 距離和速度成正比 :speed=(itarget-oDiv.offsetLeft)/10; alert(Math.floor(3.98))向下取整 alert(Math.ceil(3.22))向上取整 遇到這種運動涉及到數字的問題都要做一個判斷,向上或者向下取整 // 從用兩個函數實現,到用一個函數:兩個有很多相同的部分,則相同部分可以共用,不同部分看有什么聯系 // 從傳入兩個參數到一個參數:參數傳遞盡可能的少 <script> window.onload = function(){ var oDiv = document.getElementById("div1"); oDiv.onmouseover = function(){ startMove(0); }; oDiv.onmouseout = function(){ startMove(-200); }; }; var timer = null function startMove(offleft){ clearInterval(timer); var oDiv = document.getElementById("div1"); timer = setInterval(function(){ var speed = (offleft - oDiv.offsetLeft)/10; speed = speed > 0 ?Math.ceil(speed):Math.floor(speed); if(oDiv.offsetLeft == offleft ){ clearInterval(timer); } oDiv.style.left = oDiv.offsetLeft+speed+'px'; },30); } </script>
    查看全部
    0 采集 收起 來源:JS緩沖動畫

    2018-03-22

  • 透明度: css定義(filter:alpha(opacity:30)) JS 改變: IE:style.filter=‘alpha(opactiy:’+值+')' 非IE .style.opactiy=值/100(火狐或者chrome關于透明度的滿值1,IE是100) <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無標題文檔</title> <style> body,div{ margin:0; padding:0; } #div1{ width:200px; height:200px; background:red; filter:alpha(opacity:30); opacity:0.3; } </style> <script> window.onload = function(){ var oDiv =document.getElementById('div1'); oDiv.onmouseover=function(){ startMove(100); } oDiv.onmouseout=function(){ startMove(30); } } var timer = null; var alpha = 30; function startMove(iTarget){ var oDiv =document.getElementById('div1'); clearInterval(timer); timer=setInterval(function(){ var speed = 0; if(alpha>iTarget){ speed = -10; } else{ speed = 10; } if(alpha == iTarget){ clearInterval(timer) } else{ alpha+=speed; oDiv.style.opacity = alpha/100 } },30) } </script> </head> <body> <div id="div1"></div> </body> </html>
    查看全部
    0 采集 收起 來源:JS透明度動畫

    2018-03-22

  • JS動畫效果: 2-1:速度動畫: 為防止動畫累加,在每次觸發動畫事件時,應該先清除前一個沒有完成的動畫,即清除之前開啟的定時器,然后這次再開啟新的定時器。 命名的函數有多出相同時,使用封裝函數的方法,盡可能的減少傳入函數的參數 <style> *{margin:0;padding:0;} #div1{ width:200px; height:100px; background:#0F3; position:relative; left:-200px;} #div1 span{ display:block; height: 46px; position: absolute; right: -23px; width: 23px; text-align:center; background:#F00; } </style> <script> window.onload=function(){ var oid=document.getElementById('div1'); oid.onmouseover=function(){ startmove(0); } oid.onmouseout=function(){ startmove(-200); } } var timer=null; function startmove(offsetleft){ clearInterval(timer);//清除定時器 timer=setInterval(function(){ var speed=0; var oid=document.getElementById('div1'); // if(oid.offsetLeft==0){ if(oid.offsetLeft>offsetleft){ speed=-10;} else if(oid.offsetLeft<offsetleft){ speed=10; } else{ clearInterval(timer);} oid.style.left=oid.offsetLeft+speed+'px'; } ,30); } </script> </head> <body> <div id="div1"> <span>分享</span> </div>
    查看全部
    1 采集 收起 來源:JS速度動畫

    2018-03-22

  • shewoqishuid 運動框架實現思路 1.速度(改變值left、right、width、height、opacity) 2.緩沖運動 3.多物體運動 4.任意值變化 5.鏈式運動 6.同時運動
    查看全部
  • jquery
    查看全部
    0 采集 收起 來源:jQuery動畫案例

    2015-08-11

  • opacity
    查看全部
  • getStyle
    查看全部
    0 采集 收起 來源:獲取樣式

    2015-08-11

  • 透明度設置 filter:alpha(opacity:30)===>ie opacity:0.3===>其他瀏覽器
    查看全部
    0 采集 收起 來源:JS透明度動畫

    2018-03-22

  • offsetLeft值可以獲取當前的left值, 而offsetLeft屬性不能被賦值,只能獲取
    查看全部
    0 采集 收起 來源:JS速度動畫

    2015-08-11

  • 運動框架實現思路 1.速度(改變值left、right、width、height、opacity) 2.緩沖運動 3.多物體運動 4.任意值變化 5.鏈式運動 6.同時運動
    查看全部
  • 有border/padding屬性的div運動時不能用offsetX屬性獲取div的X,因為offsetX獲取的是div盒子的屬性 不是conten的屬性!
    查看全部
  • offsetWidth取的是整個邊框的寬度(包含padding和border寬)。而style.width則指的是content的width。為了獲取content的width,不可以用offsetWidth, oDiv.style.width 當width:200px;等樣式寫在樣式表中時,無法直接獲得oDiv.style.xxx,(寫在內聯樣式中才表示該元素擁有style屬性才能得到oDiv.style.xxx),所以要獲取樣式,需要通過函數: function getStyle(obj,attr){ if (obj.currentStyle) { return obj.currentStyle[attr];//IE瀏覽器 } else{ return getComputedStyle(obj,false)[attr]; }; } parseInt(getStyle(obj,'width')) ———————— oDiv.style.width=oDiv.style.width-1+"px";是錯誤的,因為oDiv.style.width得到的是字符串(如200px),不能直接和-1+"px"連接起來成為新的值,需要用parseInt()方法: oDiv.style.width=parseInt(oDiv.style.width)-1+"px";
    查看全部
    0 采集 收起 來源:獲取樣式

    2018-03-22

  • JSON(利用其完成同時運動) json={name:key,name:key....}可以在一個括號內加入多對值 利用for in 遍歷 :for(var i in JSON) i表示name,JSON[i]標示key(值) 可以將其理解為(屬性:值)的組合
    查看全部

舉報

0/150
提交
取消
課程須知
1.您至少已經具備JavaSript的知識。2.您已經具備一些開發經驗。
老師告訴你能學到什么?
1.使用定時器實現簡單動畫。2.如何一步步封裝庫。2.培養編程的思想。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!