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

JavaScript運(yùn)動(dòng)框架 多值運(yùn)動(dòng)(四)

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

多值運(yùn)動(dòng),也就是對(duì)于某個(gè)對(duì)象來說,不僅僅只是其中一個(gè)屬性值在變化,而是好多個(gè),比如寬,高,字體,透明度等等同時(shí)變化

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

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

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

要增強(qiáng)為:

if (bStop) {
 clearInterval(obj.timer);
}
<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>運(yùn)動(dòng)框架(四):多值運(yùn)動(dòng)</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]) {//凡是有未到達(dá)目標(biāo)點(diǎn)的,一律不讓定時(shí)器停下,否則有的屬性不能到達(dá)目標(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';
   }
  }
  //整個(gè)循環(huán)結(jié)束后,仍然保持著true,說明沒有沒到達(dá)目標(biāo)值的屬性,也就是都到了
  if (bStop) {
   clearInterval(obj.timer);//說明所有的屬性都到達(dá)了目標(biāo)值
  }

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    JSONP跨域請(qǐng)求

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

    使用有限狀態(tài)機(jī)實(shí)現(xiàn)簡(jiǎn)版的html解析器

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

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

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

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

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

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

    我們?cè)诰帉懬芭_(tái)頁面的時(shí)候,可能經(jīng)常會(huì)用到“javascript+數(shù)據(jù)”生成頁面元素的方法,但當(dāng)我們要處理的數(shù)據(jù)量較大,導(dǎo)致頁面需要展現(xiàn)過多的控件的時(shí)候,頁面的響應(yīng)速度也會(huì)直線下降
    2009-07-07

最新評(píng)論