亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

基于Vue實現拖拽效果

2019-11-19 13:56:48
字體:
來源:轉載
供稿:網友

效果圖

 

demo1.gif

分清clientY pageY screenY layerY offsetY的區別

在我們想要做出拖拽這個效果的時候,我們需要分清這幾個屬性的區別,這幾個屬性都是計算鼠標點擊的偏移值,我們需要對其進行了解才可以繼續實現我們的拖拽效果

clientY 指的是距離可視頁面左上角的距離
pageY 指的是距離可視頁面左上角的距離(不受頁面滾動影響)
screenY 指的是距離屏幕左上角的距離
layerY 指的是找到它或它父級元素中最近具有定位的左上角距離
offsetY 指的是距離它自己左上角的距離
一張圖帶大家簡單了解了解

 

區別

在我們簡單了解完這些個屬性以后,有幾個屬性需要分清。


相同點
不同點
clientY 距離頁面左上角距離 受頁面滾動的影響
pageY 距離頁面左上角的距離 不受頁面滾動影響
相同點 不同點
layerY 距離元素的左上角距離 受元素的定位的影響,會從本元素往上找到第一個定位的元素的左上角
offsetY 距離元素左上角的距離 計算相對于本元素的左上角,不在乎定位問題,計算的是內交點。是IE瀏覽器的特有屬性

 

layerY與offsetY區別

實現拖拽功能

我們既然熟悉了這幾個偏移屬性的意思,那么我們就進入我們的重點。話不多說直接上代碼

// darg.html

<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.jslet 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:{},});

當然,我們可以將它綁定為一個自定義指令,這樣的話就可以用調用指令的形式來實現拖拽效果,下面是定義自定義指令的代碼

// darg.html

<style>  #app{    position: relative;   /*定位*/    top: 10px;    left: 10px;    width: 200px;    height: 200px;    background: #666;    /*設置一下背景*/  }</style><body>  <div id="app" v-drag>    <!--實現用指令形式實現拖拽效果-->      </div></body>//main.jslet app = new Vue({  el:'#app',  data:{},  methods:{},  directives: {    drag: {      // 指令的定義      bind: function (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;                       //綁定元素位置到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;          };        };      }    }  }});

最后

到這里我們就已經把拖拽效果用Vue實現了,我們用了兩種不同的方式實現了拖拽,但實際上換湯不換藥,我們需要弄清楚pageY、screenY、clientY、layerY、offsetY等區別。當然我們同時也學習了Vue的一些方法,例如自定義指令等。

以上所述是小編給大家介紹的基于Vue實現拖拽效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品久久久久久| 亚洲国产精久久久久久久| 色悠悠久久88| 亚洲一区二区三区四区视频| 欧美精品午夜视频| 欧美一区二区三区四区在线| 久久人人爽亚洲精品天堂| 国产日韩欧美日韩| 国语自产精品视频在线看抢先版图片| 国产97人人超碰caoprom| 中文字幕欧美日韩在线| 日韩欧美精品免费在线| 精品香蕉在线观看视频一| 亚洲黄色在线看| 亚洲伊人一本大道中文字幕| 欧美性猛交xxxx黑人| 欧美午夜精品久久久久久浪潮| 国产精品直播网红| 九九热99久久久国产盗摄| 久久精品一偷一偷国产| 欧美电影电视剧在线观看| 宅男66日本亚洲欧美视频| 色婷婷综合久久久久| 欧美成人性色生活仑片| 国产视频久久久| 91成人精品网站| 久久久人成影片一区二区三区观看| 亚洲精选在线观看| 亚洲毛片在线观看.| 日韩免费av一区二区| 欧美视频在线视频| 欧美成人精品在线| 欧美高清视频一区二区| 亚洲欧美三级伦理| 久久免费视频观看| 日韩av网址在线观看| 日韩精品有码在线观看| 91久久在线观看| 欧美在线激情网| 久久久久久久久91| 久久久伊人日本| 日韩成人激情影院| 亚洲综合色激情五月| 97精品视频在线观看| 91免费精品国偷自产在线| 国产精品视频xxx| 91av网站在线播放| 亚洲第一网站男人都懂| 欧美性videos高清精品| 欧美日韩国产va另类| 国产一区二区精品丝袜| 精品国产拍在线观看| 欧美在线性爱视频| 大胆人体色综合| 亚洲va久久久噜噜噜久久天堂| 黑人巨大精品欧美一区二区免费| 亚洲精品国精品久久99热一| 91伊人影院在线播放| 日韩av在线网| 国产成人午夜视频网址| 欧美日韩性生活视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久天天躁狠狠躁夜夜av| 国产mv免费观看入口亚洲| 欧美肥婆姓交大片| 日韩中文字幕在线免费观看| 欧美日韩一区二区三区在线免费观看| 久久亚洲精品毛片| 欧美精品一区在线播放| 欧美精品在线网站| 精品视频在线观看日韩| 国产美女高潮久久白浆| 亚洲欧美日韩精品久久奇米色影视| 国产精品久久久久久久7电影| 精品国产一区二区三区久久狼5月| 人人澡人人澡人人看欧美| 亚洲日本成人女熟在线观看| 欧美精品在线观看91| 久久久久久久影视| 成人免费xxxxx在线观看| 夜夜嗨av色综合久久久综合网| 亚洲福利视频二区| 久久久久久久久亚洲| 国产精品视频免费在线| 欧美激情精品久久久久久| 欧美精品在线免费播放| 在线观看欧美视频| 精品久久久久久久久中文字幕| 91精品国产自产在线老师啪| 久久久这里只有精品视频| 成人在线视频网站| 欧美成人午夜激情在线| 欧美日本高清视频| 精品久久久久久久久久久久久久| 久久人91精品久久久久久不卡| 欧美色播在线播放| 欧美性少妇18aaaa视频| 国产精品日韩在线一区| 久久久久久久久综合| 欧美xxxx做受欧美.88| 欧美日韩国产二区| 亚洲国产精品人人爽夜夜爽| 中文日韩电影网站| 亚洲日韩中文字幕在线播放| 亚洲精品av在线播放| 亚洲伦理中文字幕| 欧美老女人性生活| 欧美精品在线播放| 亚洲影视九九影院在线观看| 8050国产精品久久久久久| 黑人精品xxx一区一二区| www.日韩免费| 美女av一区二区三区| 狠狠躁夜夜躁人人爽天天天天97| 久久99视频精品| 黄网动漫久久久| 日本高清+成人网在线观看| 亚洲综合中文字幕在线观看| 亚洲欧美中文日韩在线v日本| 精品自拍视频在线观看| 色樱桃影院亚洲精品影院| 中文在线资源观看视频网站免费不卡| 亚洲精品ady| 日韩av网址在线| 国产69精品久久久久久| 欧美又大粗又爽又黄大片视频| 亚洲成人激情在线| 亚洲人成在线观看网站高清| 国产精品揄拍一区二区| 国产精品美女主播在线观看纯欲| 欧美激情国产日韩精品一区18| 欧美性精品220| 午夜精品久久久久久久99黑人| 国产精品人人做人人爽| 97久久精品人搡人人玩| 国产日韩精品入口| 日本在线观看天堂男亚洲| 久久久免费观看视频| 久久久影视精品| 亚洲成人久久网| 欧美性猛交99久久久久99按摩| 成人免费观看a| 亲子乱一区二区三区电影| 国产成人一区二区| 国产成人精品日本亚洲专区61| 国产视频999| 色无极影院亚洲| 在线观看国产精品淫| 黑人狂躁日本妞一区二区三区| 久久久免费在线观看| 国产亚洲精品美女久久久| 日韩视频精品在线| 亚洲欧美日韩精品| 国产高清在线不卡| 51ⅴ精品国产91久久久久久| 欧美一区二区三区图| 色综合天天综合网国产成人网| 亚洲视频视频在线| 久久视频中文字幕| 国产精品99久久久久久白浆小说| 久久亚洲精品国产亚洲老地址| 国内精品在线一区| 亚洲精品成人久久| 日韩免费视频在线观看|