欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門(mén)教程網(wǎng)!

JavaScript

當(dāng)前位置:主頁(yè) > 網(wǎng)絡(luò)編程 > JavaScript >

vue實(shí)現(xiàn)拖拽效果

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:JavaScript|點(diǎn)擊: 次

vue中實(shí)現(xiàn)拖拽效果,供大家參考,具體內(nèi)容如下

首先要搞明白分清clientY pageY screenY layerY offsetY的區(qū)別

作用3(事件對(duì)象中記錄的鼠標(biāo)位置)

語(yǔ)法 解釋

evt.screenX 相對(duì)于屏幕的左上角為原點(diǎn)
evt.screenY

evt.clientX 相對(duì)于瀏覽器的客戶端左上角為原點(diǎn)(不計(jì)算滾動(dòng)條位置)
evt.clientY

evt.pageX 相對(duì)于瀏覽器的客戶端左上角為原點(diǎn)(計(jì)算滾動(dòng)條的位置)
evt.pageY

evt.offsetX 以自己的左上角為原點(diǎn)
evt.offsetY

evt.pageY/evt.pageX 相當(dāng)于文檔的左上角為原點(diǎn),即包括被被隱藏的距離;

evt.clientY/evt.clientX 相當(dāng)于瀏覽器可視窗口的左上角為原點(diǎn),即不包括被被隱藏的距離;

實(shí)現(xiàn)拖拽功能

<style>
 #app{
 position: relative; /*定位*/
 top: 10px;
 left: 10px;
 width: 200px;
 height: 200px;
 background: #666; /*設(shè)置一下背景*/
 }
</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; //獲取目標(biāo)元素
  
  //算出鼠標(biāo)相對(duì)元素的位置
  let disX = e.clientX - odiv.offsetLeft;
  let disY = e.clientY - odiv.offsetTop;
  document.onmousemove = (e)=>{ //鼠標(biāo)按下并移動(dòng)的事件
  //用鼠標(biāo)的位置減去鼠標(biāo)相對(duì)元素的位置,得到元素的位置
  let left = e.clientX - disX; 
  let top = e.clientY - disY;
   
  //綁定元素位置到positionX和positionY上面
  this.positionX = top;
  this.positionY = left;
   
  //移動(dòng)當(dāng)前元素
  odiv.style.left = left + 'px';
  odiv.style.top = top + 'px';
  };
  document.onmouseup = (e) => {
  document.onmousemove = null;
  document.onmouseup = null;
  };
 } 
 
 },
 computed:{},
});

當(dāng)然,我們可以將它綁定為一個(gè)自定義指令,這樣的話就可以用調(diào)用指令的形式來(lái)實(shí)現(xiàn)拖拽效果,下面是定義自定義指令的代碼

在main.js中定義全局指令

Vue.directive('drag'
 drag: {
  // 指令的定義
  bind(el) {
  let odiv = el; //獲取當(dāng)前元素
  oDiv.onmousedown = (e) => {
   //算出鼠標(biāo)相對(duì)元素的位置
   let disX = e.clientX - odiv.offsetLeft;
   let disY = e.clientY - odiv.offsetTop;
   
   document.onmousemove = (e)=>{
   //用鼠標(biāo)的位置減去鼠標(biāo)相對(duì)元素的位置,得到元素的位置
   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";}
   
   //移動(dòng)當(dāng)前元素
   odiv.style.left = left + 'px';
   odiv.style.top = top + 'px';
   };
   document.onmouseup = (e) => {
   document.onmousemove = null;
   document.onmouseup = null;
   };
   }
 }
});

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:判斷JavaScript中的兩個(gè)變量是否相等的操作符

欄    目:JavaScript

下一篇:微信小程序?qū)崿F(xiàn)簽字功能

本文標(biāo)題:vue實(shí)現(xiàn)拖拽效果

本文地址:http://mengdiqiu.com.cn/a1/JavaScript/9432.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有