vue 드래그 효과 구현
우선 클 라 이언 트 Y 페이지 Y screenY layerY offsetY 의 차 이 를 가 려 야 합 니 다.
역할 3(이벤트 대상 에 기 록 된 마우스 위치)
문법 해석
evt.screenX 는 화면의 왼쪽 상단 에 비해 원점 입 니 다.
evt.screenY
vt.clientX 는 브 라 우 저의 클 라 이언 트 왼쪽 상단 에 원점(스크롤 바 위 치 를 계산 하지 않 음)
evt.clientY
vt.pageX 는 브 라 우 저의 클 라 이언 트 왼쪽 상단 을 원점 으로 합 니 다(스크롤 바 의 위 치 를 계산 합 니 다)
evt.pageY
evt.offsetX 는 자신의 왼쪽 상단 을 원점 으로 한다.
evt.offsetY
vt.pagey/evt.pageX 는 문서 의 왼쪽 상단 에 해당 하 는 원점 입 니 다.즉,숨겨 진 거 리 를 포함 합 니 다.
vt.clientY/evt.clientX 는 브 라 우 저 시각 창의 왼쪽 상단 을 원점 으로 합 니 다.즉,숨겨 진 거 리 를 포함 하지 않 습 니 다.
드래그 기능 구현
<style>
#app{
position: relative; /* */
top: 10px;
left: 10px;
width: 200px;
height: 200px;
background: #666; /* */
}
</style>
<body>
<div id="app" @mousedown="move"> <!-- -->
{{positionX}}
{{positionY}}
</div>
</body>
//main.js
let app = new Vue({
el:'#app',
data:{
positionX:0,
positionY:0,
},
methods:{
move(e){
let odiv = e.target; //
//
let disX = e.clientX - odiv.offsetLeft;
let disY = e.clientY - odiv.offsetTop;
document.onmousemove = (e)=>{ //
// ,
let left = e.clientX - disX;
let top = e.clientY - disY;
// positionX positionY
this.positionX = top;
this.positionY = left;
//
odiv.style.left = left + 'px';
odiv.style.top = top + 'px';
};
document.onmouseup = (e) => {
document.onmousemove = null;
document.onmouseup = null;
};
}
},
computed:{},
});
물론 사용자 정의 명령 으로 연결 할 수 있 습 니 다.그러면 명령 을 호출 하 는 형식 으로 드래그 효 과 를 실현 할 수 있 습 니 다.다음은 사용자 정의 명령 을 정의 하 는 코드 입 니 다.main.js 에서 전역 명령 을 정의 합 니 다.
Vue.directive('drag'
drag: {
//
bind(el) {
let odiv = el; //
oDiv.onmousedown = (e) => {
//
let disX = e.clientX - odiv.offsetLeft;
let disY = e.clientY - odiv.offsetTop;
document.onmousemove = (e)=>{
// ,
let left = e.clientX - disX;
let top = e.clientY - disY;
if(left<3) {
left=0;
odiv.style.width="2px";
}else{odiv.style.width="auto";}
if(left>innerWidth-odiv.offsetWidth) {left=innerWidth- odiv.offsetWidth;odiv.style.width="2px";}
//
odiv.style.left = left + 'px';
odiv.style.top = top + 'px';
};
document.onmouseup = (e) => {
document.onmousemove = null;
document.onmouseup = null;
};
}
}
});
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.