2017-10-09 67 views
1

以下是使用left屬性向右移動框的簡單設置。該屬性通過點擊按鈕進行更新。爲什麼在第一次點擊按鈕時不會應用過渡動畫?爲什麼第一次設置屬性時不應用動畫(轉換)

document.addEventListener('DOMContentLoaded',() => { 
 
    const box = document.querySelector('.box'); 
 
    const button = document.querySelector('button'); 
 
    button.addEventListener('click',() => { 
 
    const current = parseInt(box.style.left); 
 
    box.style.left = (isNaN(current) ? 0 : current) + 50 + "px"; 
 
    }); 
 
})
.box { 
 
    width: 100px; 
 
    height: 100px; 
 
    background: green; 
 
    position: relative; 
 
    transition: left 1s; 
 
}
<button>Click me!</button> 
 
<div class="box"></div>

回答

5

left初始值是autoauto不是可轉換值。

您需要明確設置left: 0才能進行轉換。

+0

很好,謝謝'auto'不是任何財產可轉換值,是否正確? –

2

left的一些初始值開始。

document.addEventListener('DOMContentLoaded',() => { 
 
    const box = document.querySelector('.box'); 
 
    const button = document.querySelector('button'); 
 
    button.addEventListener('click',() => { 
 
     const current = parseInt(box.style.left); 
 
     box.style.left = (isNaN(current) ? 0 : current) + 50 + "px"; 
 
    }); 
 
})
.box { 
 
      left: 0; 
 
      width: 100px; 
 
      height: 100px; 
 
      background: green; 
 
      position: relative; 
 
      transition: left 1s; 
 
     }
<button>Click me!</button> 
 
<div class="box"></div>

1

「左」 屬性intialized爲 「自動」,沒有過渡可以應用。 相反試試這個:

document.addEventListener('DOMContentLoaded',() => { 
 
    const box = document.querySelector('.box'); 
 
    const button = document.querySelector('button'); 
 
    button.addEventListener('click',() => { 
 
     const current = parseInt(box.style.left); 
 
     box.style.left = (isNaN(current) ? 0 : current) + 50 + "px"; 
 
    }); 
 
})
.box { 
 
    left: 0; 
 
    width: 100px; 
 
    height: 100px; 
 
    background: green; 
 
    position: relative; 
 
    transition: left 1s; 
 
}
<button>Click me!</button> 
 
<div class="box"></div>

相關問題