JS 드래그 및 자주 묻는 질문
1703 단어 JS 학습
JS 드래그:
웹 페이지든 qq 로그인 상자든 모두 드래그 기능이 있는데 어떻게 드래그를 실현합니까?1. 원리 드래그의 원리는 간단합니다. 그리고 마우스 클릭에서div까지의 고정된 수평거리disX와 마우스 클릭에서div까지의 수직거리disY고정은 변하지 않습니다.2. 관련된 세 가지 이벤트를 끌어당기기 Onmousedown 저장 거리 Onmousemove는 거리에 따라 div의 최신 위치를 계산하고 Onmouseup 마우스를 들어올린다.드래그 흔히 볼 수 있는 문제 드래그 문제 1: 마우스 움직임이 빨라 작은 네모를 그립니다.해결 방법: onmousemove () 와 onmouseup () 이벤트를 무한대document에 추가합니다.
끌어당기는 문제 2: 경계 판단: 해결 방법: 경계의 임계값을 설정하여 해결한다.Clientwidth와clientheight 4.전체 코드:
Document
window.onload = function()
{
var oDiv = document.getElementById('div1');
var disX = 0;
var disY = 0; // :
oDiv.onmousedown = function(ev)
{
var oEvent = ev || event;
disX = oEvent.clientX - oDiv.offsetLeft;
disY = oEvent.clientY - oDiv.offsetTop;
document.onmousemove = function(ev)
{
var oEvent = ev || event;
var l = oEvent.clientX - disX ;
var t = oEvent.clientY - disY ;
//
if(l<=0)
{
l = 0;
}
else if(l >= document.documentElement.clientWidth - oDiv.offsetWidth )
{
l = document.documentElement.clientWidth - oDiv.offsetWidth;
}
if(t<=0)
{
t = 0;
}
else if(t >= document.documentElement.clientHeight - oDiv.offsetHeight )
{
t = document.documentElement.clientHeight - oDiv.offsetHeight;
}
oDiv.style.left = l + 'px';
oDiv.style.top = t + 'px';
}
document.onmouseup = function()
{
document.onmousemove = null;
document.onmouseup = null; // ;
}
}
document.addEventListener
}