怎样使用Vue操作DIV

互联网 18-6-4
这次给大家带来怎样使用Vue操作DIV,使用Vue操作DIV的注意事项有哪些,下面就是实战案例,一起来看一下。

效果图

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>    <p id="app" @mousedown="move">    <!--绑定按下事件-->      {{positionX}}      {{positionY}}    </p>  </body>  //main.js  let app = new Vue({    el:'#app',    data:{      positionX:0,      positionY:0,    },    methods:{      move(e){        let op = e.target;    //获取目标元素                //算出鼠标相对元素的位置        let disX = e.clientX - op.offsetLeft;        let disY = e.clientY - op.offsetTop;        document.onmousemove = (e)=>{    //鼠标按下并移动的事件          //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置          let left = e.clientX - disX;            let top = e.clientY - disY;                    //绑定元素位置到positionX和positionY上面          this.positionX = top;          this.positionY = left;                    //移动当前元素          op.style.left = left + 'px';          op.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>    <p id="app" v-drag>    <!--实现用指令形式实现拖拽效果-->          </p>  </body>  //main.js  let app = new Vue({    el:'#app',    data:{},    methods:{},    directives: {      drag: {        // 指令的定义        bind: function (el) {          let op = el;  //获取当前元素          op.onmousedown = (e) => {            //算出鼠标相对元素的位置            let disX = e.clientX - op.offsetLeft;            let disY = e.clientY - op.offsetTop;                        document.onmousemove = (e)=>{              //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置              let left = e.clientX - disX;                let top = e.clientY - disY;                           //绑定元素位置到positionX和positionY上面              this.positionX = top;              this.positionY = left;                        //移动当前元素              op.style.left = left + 'px';              op.style.top = top + 'px';            };            document.onmouseup = (e) => {              document.onmousemove = null;              document.onmouseup = null;            };          };        }      }    }  });

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

utils.js使用案例详解

Nuxt.js SSR的权限验证使用

以上就是怎样使用Vue操作DIV的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 怎样
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:jQuery实现鼠标绑定事件图片放大功能

相关资讯