欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript運動框架 多值運動(四)

 更新時間:2022年05月08日 10:48:33   作者:GY_U_YG  
這篇文章主要為大家詳細介紹了JavaScript運動框架第四部分,多值運動,具有一定的參考價值,感興趣的小伙伴們可以參考一下

多值運動,也就是對于某個對象來說,不僅僅只是其中一個屬性值在變化,而是好多個,比如寬,高,字體,透明度等等同時變化

當(dāng)然了,多值運動會產(chǎn)生一個問題,就是定時器何時關(guān)閉的問題!當(dāng)然是所有的屬性值都運動到目標(biāo)值了才能清理定時器,也就是等最慢的。就好比十個人一起聚餐,不能等到來一個人就開吃!

前幾篇講的都是一個元素對象中某一個屬性的運動,這次講同一個元素對象中多個屬性值的緩沖運動,那么每個屬性都有個終點(目標(biāo)點),我們把這些屬性及其目標(biāo)值寫成一個對象的形式,或者是json狀!容易產(chǎn)生的問題就是上面說的,這里用了共同的速度函數(shù),但有的屬性值從100 –> 101, 有的屬性值從100 –> 600,你得等耗時最長的屬性值到達目標(biāo)值才能關(guān)閉該obj所擁有的定時器,設(shè)計的思路就是每次執(zhí)行輪詢函數(shù)設(shè)置一個bStob = true;在遍歷掃描json中屬性的時候,只要有沒到到目標(biāo)值的屬性,就設(shè)為false,這樣定時器就不會關(guān)閉,即使有的屬性值已經(jīng)到達終點,此時輪詢依舊會執(zhí)行掃描,只不過此時該屬性運動速度為0了,也不會運動了。也就是之前:

if(attr == cur) {
 cleartInterval(obj.timer);
}

要增強為:

if (bStop) {
 clearInterval(obj.timer);
}
<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>運動框架(四):多值運動</title>
 <style type="text/css">
 div {
  width: 100px;
  height: 100px;
  background: orange;
  margin: 10px;
  float: left;
 }
 </style>
</head>
<body>
 <div id="div1"></div>

 <script type="text/javascript">
 var oDiv = document.getElementById('div1');
 oDiv.onmouseover = function() {
  var json = {
  width: 600,
  height: 200,
  opacity: 30
  };
  startMove(this, json);
 };
 oDiv.onmouseout = function() {
  var json = {
  width: 100,
  height: 100,
  opacity: 100
  };
  startMove(this, json);
 };
 function getStyle(obj, attr) {
  if (obj.currentStyle) {
  return obj.currentStyle[attr];
  } else {
  return getComputedStyle(obj, false)[attr];
  }
 }

 function startMove(obj, json) {
  clearInterval(obj.timer);
  obj.timer = setInterval(function() {
  var bStop = true;
  for (var attr in json) {
   var cur = 0;
   if (attr === 'opacity') {
   cur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
   } else {
   cur = parseInt(getStyle(obj, attr));
   }
   var speed = (json[attr] - cur) / 10;
   speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
   if (cur != json[attr]) {//凡是有未到達目標(biāo)點的,一律不讓定時器停下,否則有的屬性不能到達目標(biāo)值
   bStop = false;
   }
   if (attr === 'opacity') {
   cur += speed;
   obj.style.filter = 'alpha(opacity:' + cur + ')';
   obj.style.opacity = cur / 100;//Chrome,IE
   } else {
   obj.style[attr] = cur + speed + 'px';
   }
  }
  //整個循環(huán)結(jié)束后,仍然保持著true,說明沒有沒到達目標(biāo)值的屬性,也就是都到了
  if (bStop) {
   clearInterval(obj.timer);//說明所有的屬性都到達了目標(biāo)值
  }

  }, 30);
 }
 </script>
</body>
</html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript中的this例題實戰(zhàn)總結(jié)詳析

    JavaScript中的this例題實戰(zhàn)總結(jié)詳析

    使用JavaScript開發(fā)的時候,很多人多多少少都會被this的指向問題搞蒙圈,下面這篇文章主要給大家介紹了關(guān)于JavaScript中this例題實戰(zhàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • axios請求參數(shù)的三種方式示例詳解

    axios請求參數(shù)的三種方式示例詳解

    這篇文章主要介紹了axios請求參數(shù)的三種方式,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • JS驗證日期的格式Y(jié)YYY-mm-dd 具體實現(xiàn)

    JS驗證日期的格式Y(jié)YYY-mm-dd 具體實現(xiàn)

    這篇文章介紹了JS對日期格式的驗證實例,有需要的朋友可以參考一下
    2013-06-06
  • 在JavaScript 中按字母排序之如何在 JS 中按名稱排序

    在JavaScript 中按字母排序之如何在 JS 中按名稱排序

    有時你可能有一個單詞數(shù)組,你想按字母順序(從 a-z)對每個單詞進行排序,或者你可能有一個包含用戶信息(包括名字)的對象數(shù)組,例如,你想按照用戶的名字來排序,接下來通過本文給大家介紹在JavaScript 中按字母排序之如何在 JS 中按名稱排序,需要的朋友可以參考下
    2023-09-09
  • 詳解webpack模塊化管理和打包工具

    詳解webpack模塊化管理和打包工具

    這篇文章主要介紹了詳解webpack模塊化管理和打包工具,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • JSONP跨域請求

    JSONP跨域請求

    本文主要介紹了jsonp跨域請求的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • 使用有限狀態(tài)機實現(xiàn)簡版的html解析器

    使用有限狀態(tài)機實現(xiàn)簡版的html解析器

    FSM(Finite State Machines) 有限狀態(tài)機,也叫有限狀態(tài)自動機,是為研究有限內(nèi)存的計算過程和某些語言類而抽象出的一種計算模型,本文將使用有限狀態(tài)機實現(xiàn)一個簡版的html解析器,有需要的小伙伴可以參考下
    2023-11-11
  • JavaScript 輕松搞定快捷留言功能 只需一行代碼

    JavaScript 輕松搞定快捷留言功能 只需一行代碼

    快捷留言功能,就是您現(xiàn)在看到在右側(cè)浮動的那個小玩意,通過它可以直接提交留言并推薦,您想在博客里加上這個功能嗎?
    2010-04-04
  • 微信小程序開發(fā)之實現(xiàn)一個跑步小程序

    微信小程序開發(fā)之實現(xiàn)一個跑步小程序

    本文將開發(fā)一個簡易的微信跑步小程序,用到的方法是wx.onLocationChange,可以監(jiān)聽實時地理位置變化事件,感興趣的小伙伴可以了解一下
    2022-08-08
  • javascript 處理HTML元素必須避免使用的一種方法

    javascript 處理HTML元素必須避免使用的一種方法

    我們在編寫前臺頁面的時候,可能經(jīng)常會用到“javascript+數(shù)據(jù)”生成頁面元素的方法,但當(dāng)我們要處理的數(shù)據(jù)量較大,導(dǎo)致頁面需要展現(xiàn)過多的控件的時候,頁面的響應(yīng)速度也會直線下降
    2009-07-07

最新評論