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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這里的同步函數為什么沒有效果,必須要加個計時器才行?

這里的同步函數為什么沒有效果,必須要加個計時器才行?

慕村225694 2018-07-16 11:31:21
//組合繼承 部分代碼 //構造函數 傳入一個id 生成一個輪播圖對象     function Slider (id) {         this.create(id)     };     //定義原型     Slider.prototype = {         create: function (id) {                         this.list = document.getElementById('list');                         ...                         ...                         ...             //初始化實例中的dom以及屬性     **初始狀態沒有transition**         },         animate: function (offset,animateDuration) {             //獲取的是style.left,是相對左邊獲取距離,所以第一張圖后style.left都為負值,             //且style.left獲取的是字符串,需要用parseInt()取整轉化為數字。             this.list.style.transition = `left ${animateDuration} linear`;//看這里!             var newLeft = parseInt(this.list.style.left) + offset;             this.list.style.left = newLeft + 'px';  //看這里!         },     };     var slider = new Slider('container');     /*setTimeout(function () {         slider.animate(-300,'1s')     },0)  只有異步才有效,刷新有動畫 */     slider.animate(-300,'1s')   //無效,沒有動畫,刷新直接跳轉遇到這么一個問題, slider.animate(-300,'1s') 無效,必須放計時器里才用動畫為什么會出現這種情況
查看完整描述

1 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

一個動畫要有起始狀態和結束狀態,這樣就必須經過兩次頁面渲染才能確定兩個狀態、
我在你上一問題中說了:一個js代碼的線程執行結束頁面才會重新渲染。
就是說,在js線程執行前是動畫的起始狀態,在js線程執行后是動畫的結束狀態。

如果你在一個js線程中同時設置動畫的起始狀態和動畫的結束狀態,這樣在設置動畫的起始狀態后頁面不會重新渲染。也就不能形成動畫了


查看完整回答
反對 回復 2018-07-28
  • 1 回答
  • 0 關注
  • 647 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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