怎样使用Vue操作DIV

广告:宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取~~~

怎样使用Vue操作DIV

这次给大家带来怎样使用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.jslet 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.jslet 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;          };        };      }    }  }});
登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注9543建站博客其它相关文章!

推荐阅读:

utils.js使用案例详解

Nuxt.js SSR的权限验证使用

以上就是怎样使用Vue操作DIV的详细内容,更多请关注9543建站博客其它相关文章!

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:yii框架如何写日志?
下一篇:微信8.0状态视频怎么设置

发表评论

关闭广告
关闭广告