js進(jìn)階第四天

一泳猬、Math常用函數(shù)

  • **Math.ceil() 向上取整 天花板 **

    Math.ceil(1.11) 結(jié)果 是 2

    Math.ceil(1.99) 結(jié)果 是 2

    Math.ceil(-1.5) 結(jié)果 是 -1

  • **Math.floor() 向下取整 地板 **

    Math.floor(1.11) 結(jié)果 是 1

    Math.floor(1.99) 結(jié)果 是 1

    Math.floor(-1.2) 結(jié)果 是 -2

  • Math.round() 四舍五入

    Math.round(1.11) 結(jié)果 是 1

    Math.round(1.99) 結(jié)果 是 2

    Math.round(-1.2) 結(jié)果 是 -2

二念秧、緩動(dòng)動(dòng)畫原理

  • 緩動(dòng)動(dòng)畫的原理:** 盒子本身的位置 + 步長(zhǎng) (不斷變化的奴璃,由大變小)**

  • 步長(zhǎng):**begin = begin + (end - begin) / 緩動(dòng)系數(shù) **

  • 基本的緩動(dòng)動(dòng)畫函數(shù):

    // 緩動(dòng)動(dòng)畫
    // 誰  目標(biāo)
    function buffer(obj, target) {
        // 1. 清除定時(shí)器
        clearInterval(obj.timer);
        // 2. 設(shè)置定時(shí)器
        obj.timer = setInterval(function () {
               // 2.1 求出步長(zhǎng)
               var speed = (target - obj.offsetLeft) / 20;
               console.log(speed);
               speed = speed > 0 ? Math.ceil(speed): Math.floor(speed);
               console.log(speed);
               // 2.2 設(shè)置動(dòng)畫
               obj.style.left = obj.offsetLeft + speed + 'px';
               obj.innerHTML = obj.offsetLeft;
               // 2.3 清除定時(shí)器
               if(obj.offsetLeft == target){
                      clearInterval(obj.timer);
                }
                }, 20);
    }
    

2.1 常見的 js訪問 CSS 屬性

  • 在開發(fā)中己英,訪問得到css 屬性姨夹,比較常用的有兩種:

    • 點(diǎn)語法

      box.style.width甜癞,box.style.height夕晓,box.style.top,box.style.left
      得到帶有單位的屬性值悠咱,比如:200px蒸辆;
      但是,點(diǎn)語法存在一個(gè)很致命的問題析既,跟在style后面的屬性不能由外面?zhèn)魅?/p>

      var h = 'height';
      box.style.h = 300 + 'px';
      
    • 下標(biāo)語法

    ** 利用 [] 訪問屬性 元素.style[“屬性”]; **
    這種語法的好處就是可以動(dòng)態(tài)的傳遞參數(shù)作為屬性

         var h = 'height';
         box.style[h] = 300 + 'px';
    

2.2 JS獲取CSS的樣式

在開發(fā)中吁朦,我們想要獲得css 的樣式,通常采用:box.style.top 渡贾,box.style.backgorundColor等逗宜, 但這種方式只能得到 行內(nèi)樣式,而平常用的最多的是頁內(nèi)樣式或者外部樣式, 如何解決纺讲。

    • 在IE和Opera瀏覽器

      **obj.currentStyle **

    • 其他W3C標(biāo)準(zhǔn)瀏覽器

      **window.getComputedStyle("元素", "偽類") ** ( 注意:兩個(gè)選項(xiàng)是必須的擂仍, 沒有偽類 用 **null **替代 )

    • 兼容寫法
      function getStyleAttr(obj, attr) {
          if(obj.currentStyle){ // IE 和 opera
               return obj.currentStyle[attr];
          }else {
               return window.getComputedStyle(obj, null)[attr];
          }
      }
      

2.3 js對(duì)象遍歷

  • for in 關(guān)鍵字

    for ( 變量 in 對(duì)象) { 執(zhí)行語句; }

    for(var k in json){
       console.log(k); // key
       console.log(json[k]); // value
    }
    

2.4 回調(diào)函數(shù)

在開發(fā)中,有很多操作是鏈?zhǔn)降陌旧酰乱粋€(gè)操作接著上一個(gè)操作執(zhí)行逢渔,如何實(shí)現(xiàn)** 回調(diào)函數(shù)。**

   回調(diào)函數(shù)什么時(shí)候調(diào)用?
  --> 動(dòng)畫結(jié)束的時(shí)候調(diào)用 
  --> 動(dòng)畫什么時(shí)候結(jié)束?
  ---> 定時(shí)器被清除的時(shí)候
  --> 定時(shí)器被清除時(shí)調(diào)用回調(diào)函數(shù)

2.5 完整版緩動(dòng)動(dòng)畫

  /*
   * 緩動(dòng)動(dòng)畫
   * obj: 要做動(dòng)畫的元素
   * json: 要做動(dòng)畫的屬性鍵值對(duì)
   * fn: 回調(diào)函數(shù)
  */
  function Buffer(obj, json, fn) {
      // 1. 清除定時(shí)器
      clearInterval(obj.timer);
      // 2. 設(shè)置定時(shí)器
      obj.timer = setInterval(function () {
          var flag = true, begin, target;
          // 2.1 遍歷json
          for(var k in json){
             // 2.1.1 獲取做動(dòng)畫屬性的初始值
             if('opacity' == k){ // 透明度
                begin = parseInt(parseFloat(getCssStyleAttr(obj, k)) *100) || 0;
                target = parseInt(parseFloat(json[k])*100);
             }else { // 其他動(dòng)畫
                begin = parseInt(getCssStyleAttr(obj, k));
                target = parseInt(json[k]);
             }
             // 2.1.2 獲取動(dòng)畫的步長(zhǎng)
             var speed = (target - begin) / 20;
             speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
             // 2.1.3 設(shè)置緩動(dòng)動(dòng)畫
             if('opacity' == k ){ // 透明度
                   obj.style.opacity = (begin + speed) / 100;
                   obj.style.filter = 'alpha(opacity='+ (begin + speed) +')';
             }else if('zIndex' == k){
                   obj.style.zIndex = json[k];
            }else { // 其他情況
                  obj.style[k] = begin + speed + 'px';
            }
            // 2.1.4 判斷是否清除定時(shí)器
            flag = (begin != target) ? false : true;
           }
           // 2.2 清除定時(shí)器
           if(flag){
               clearInterval(obj.timer);
               //判斷
               if(fn){
                   fn(); // 執(zhí)行函數(shù)
               }
           }
       }, 20);
  }

  function $(id) {
      return document.getElementById(id);
  }

  function getCssStyleAttr(obj, attr) {
      if(obj.currentStyle){
          return obj.currentStyle[attr];
      }else {
          return window.getComputedStyle(obj, null)[attr];
      }
  }
4256-106.jpg

61048-106.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乡括,一起剝皮案震驚了整個(gè)濱河市肃廓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诲泌,老刑警劉巖盲赊,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異敷扫,居然都是意外死亡哀蘑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門葵第,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绘迁,“玉大人,你說我怎么就攤上這事卒密∽禾ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵哮奇,是天一觀的道長(zhǎng)将硝。 經(jīng)常有香客問我,道長(zhǎng)屏镊,這世上最難降的妖魔是什么依疼? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮而芥,結(jié)果婚禮上律罢,老公的妹妹穿的比我還像新娘。我一直安慰自己棍丐,他們只是感情好误辑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著歌逢,像睡著了一般巾钉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秘案,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天砰苍,我揣著相機(jī)與錄音潦匈,去河邊找鬼。 笑死赚导,一個(gè)胖子當(dāng)著我的面吹牛茬缩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吼旧,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼凰锡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了圈暗?” 一聲冷哼從身側(cè)響起掂为,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎员串,沒想到半個(gè)月后勇哗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昵济,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年智绸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了野揪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片访忿。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖斯稳,靈堂內(nèi)的尸體忽然破棺而出海铆,到底是詐尸還是另有隱情,我是刑警寧澤挣惰,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布卧斟,位于F島的核電站,受9級(jí)特大地震影響憎茂,放射性物質(zhì)發(fā)生泄漏珍语。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一竖幔、第九天 我趴在偏房一處隱蔽的房頂上張望板乙。 院中可真熱鬧,春花似錦拳氢、人聲如沸募逞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽放接。三九已至,卻和暖如春留特,著一層夾襖步出監(jiān)牢的瞬間纠脾,已是汗流浹背玛瘸。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乳乌,地道東北人捧韵。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像汉操,于是被迫代替她去往敵國(guó)和親再来。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容