簡體   English   中英

如何使用 Javascript 進行 div 移動?

[英]How to make a div move with Javascript?

javascript 的新手我已經看過很多關於如何移動 div 的不同教程,但由於某種原因,它從來沒有用過,這是我到目前為止所看到的

let dodger = document.querySelector('dodger');
let moveBy = 10;
windows.addEventListener('load',() =>{
    dodger.style.position = 'absolue';
    dodger.style.left = 0;
    dodger.style.top = 0;
} )
window.addEventListener('keyup', (e) => {
    switch (e.key) {
        case 'ArrowLeft':
            dodger.style.left = parseInt(dodger.style.left) - moveBy + 'px';
            break;
        case 'ArrowRight':
            dodger.style.left = parseInt(dodger.style.left) + moveBy + 'px';
            
            break;
        case 'ArrowUp':
            dodger.style.top = parseInt(dodger.style.top) - moveBy + 'px';
            break;
        case 'ArrowDown':
            dodger.style.top = parseInt(dodger.style.top) + moveBy + 'px';
            break;
    }
});

dodger 是一個黑色正方形 100 x 100 px

1)您可以通過傳遞 CSS 選擇器來獲取 HTML 元素,如果它是一個id ,那么你有前綴# ,如果 class 前綴它. .

let dodger = document.querySelector('#dodger');

2)您可以從getComputedStyle獲取topleftrightbottom並移動它

 let dodger = document.querySelector('#dodger'); let moveBy = 10; window.addEventListener('keyup', (e) => { const styles = getComputedStyle(dodger); switch (e.key) { case 'ArrowLeft': dodger.style.left = parseInt(styles.left) - moveBy + 'px'; break; case 'ArrowRight': dodger.style.left = parseInt(styles.left) + moveBy + 'px'; break; case 'ArrowUp': dodger.style.top = parseInt(styles.top) - moveBy + 'px'; break; case 'ArrowDown': dodger.style.top = parseInt(styles.top) + moveBy + 'px'; break; } });
 #dodger { height: 100px; width: 100px; background-color: red; position: absolute; left: 0; top: 0; }
 <div id="dodger"></div>

window.addEventListener('keyup', (e) => {
const dodger = document.querySelector('#dodger');
const move = {
    ArrowLeft: {left: -1, top: 0},
    ArrowRight: {left: 1, top: 0},
    ArrowUp: {left: 0, top: -1},
    ArrowDown: {left: 0, top: 1},
  };
  const coords = dodger.getBoundingClientRect();
  const moveBy = 100;
  dodger.style.left = (move[e.key].left * moveBy) + coords.left;
  dodger.style.top = (move[e.key].top * moveBy) + coords.top;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM