最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ì)象來(lái)說(shuō),不僅僅只是其中一個(gè)屬性值在變化,而是好多個(gè),比如寬,高,字體,透明度等等同時(shí)變化

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

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

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

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

相關(guān)文章

最新評(píng)論

台南县| 唐海县| 平邑县| 三亚市| 潮安县| 武宁县| 石台县| 澎湖县| 盐源县| 金乡县| 宿松县| 巴里| 华安县| 虹口区| 宕昌县| 年辖:市辖区| 交口县| 敦煌市| 确山县| 开封市| 黄骅市| 咸宁市| 中卫市| 固镇县| 屏东县| 弋阳县| 太仆寺旗| 长寿区| 安国市| 民丰县| 兴城市| 迁安市| 海安县| 竹溪县| 腾冲县| 河津市| 象山县| 安丘市| 内江市| 仁怀市| 历史|