Vue 스위치 끌기 효과 구현
css:
<style>
.box {
position: absolute;
left: 100px;
top: 100px;
width: 100px;
height: 100px;
background: red;
}
.box2 {
position: absolute;
left: 400px;
top: 100px;
width: 100px;
height: 100px;
background: green;
}
</style>
html:
<div id="app">
<div class="box" v-drag="isDrag"></div>
<div class="box2" v-drag:fn.limit.b="isDrag"></div>
<button @click="isDrag = !isDrag">{{isDrag}}</button>
</div>
js:
<script src="vue.js"></script>
<script>
//
Vue.directive('drag', {
bind(el, {value, arg, modifiers}) {
console.log(value, arg, modifiers)
el._value = value;
el._isDrag = false;
el.addEventListener('mousedown', function(e) {
if (!el._value) return;
el._isDrag = true;
el._x = e.clientX - el.offsetLeft;
el._y = e.clientY - el.offsetTop;
e.preventDefault();
});
document.addEventListener('mousemove', function(e) {
if (el._isDrag) {
let l = e.clientX - el._x;
let t = e.clientY - el._y;
if (modifiers.limit) {
if (l < 0) {
l = 0;
}
if (t < 0) {
t = 0;
}
}
el.style.left = l + 'px';
el.style.top = t + 'px';
}
});
document.addEventListener('mouseup', function(e) {
el._isDrag = false;
});
},
componentUpdated(el, {value}) {
console.log(' ', value);
el._value = value;
}
});
let app = new Vue({
el: '#app',
data: {
isDrag: false
}
});
</script>
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.