Orada! sorunsuz hareket eden #drag
eleman almak için bir sorunum var. Hareketli eleman oldu mousemove
olayla sorun mousemove olay çok fazlaMousemove olayıyla birlikte Javascript hareket öğesi 60 FPS requestAnimationFrame
yüzden, ben onların yöntemi kullanmış deneyin ateş": o söyledi http://www.html5rocks.com/en/tutorials/speed/animations/#debouncing-mouse-events
:
ben bu yazıda bakmak kullanarak requestAnimationFrame
+ boolean checking
canlı eylem için bu keman de
görünüm:. https://jsfiddle.net/5f181w9t/
HTML:
<div id="drag">this is draggable</div>
CSS:
#drag {width:100px; height:50px; background-color:red; transform:translate3d(0, 0, 0); }
JS:
var el = document.getElementById("drag"),
startPosition = 0, // start position mousedown event
currentPosition = 0, // count current translateX value
distancePosition = 0, // count distance between "down" & "move" event
isMouseDown = false; // check if mouse is down or not
function mouseDown(e) {
e.preventDefault(); // reset default behavior
isMouseDown = true;
startPosition = e.pageX; // get position X
currentPosition = getTranslateX(); // get current translateX value
requestAnimationFrame(update); // request 60fps animation
}
function mouseMove(e) {
e.preventDefault();
distancePosition = (e.pageX - startPosition) + currentPosition; // count it!
}
function mouseUp(e) {
e.preventDefault();
isMouseDown = false; // reset mouse is down boolean
}
function getTranslateX() {
var translateX = parseInt(getComputedStyle(el, null).getPropertyValue("transform").split(",")[4]);
return translateX; // get translateX value
}
function update() {
if (isMouseDown) { // check if mouse is down
requestAnimationFrame(update); // request 60 fps animation
}
el.style.transform = "translate3d(" + distancePosition + "px, 0, 0)";
// move it!
}
el.addEventListener("mousedown", mouseDown);
document.addEventListener("mousemove", mouseMove);
document.addEventListener("mouseup", mouseUp);
bu onu, başarılı bir doğru yolu nedir?
Kodumdaki sorun nedir?
sayesinde
Evet, kodunuzdaki sorun nedir? – Kaiido
Yorum yapmak için Kaiido'ya teşekkürler. Gerçekten mi? hissediyorum, gerçekten pürüzsüz değil? –
FF'm mükemmel bir şekilde pürüzsüz, biraz kromda yanıp sönüyor, bu doğru, ama kesinlikle bu kırmızı renk yüzünden. – Kaiido