最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • vue拖拽指令之offsetX、clientX、pageX、screenX

    正文概述 掘金(wade3po)   2021-01-19   716

    自己一直很想做个拖拽生成静态页面的东西,说简单也简单,这个东西按道理用jsx语法是最好的,用render方法渲染生成的json。只是自己对这块还是没信心。今天写个vue的拖拽指令,顺便理一下offsetX、pageX、clientX、screenX这几个属性,一直记不住。

    先大概记一下这几个的翻译(应该是正确的): offset:偏移;client:客户;page:页面;screen:屏幕;

    offsetX:相对于触发元素的偏移距离; clientX:相对于客户端浏览器的距离,可以理解成相对于地址栏以下的区域; pageX:相对于整个页面的距离,比clientX要加上滚动条移动的距离; screenX:相对于整个屏幕的距离,包含地址栏; vue拖拽指令之offsetX、clientX、pageX、screenX

    搞明白了这几个相对的距离,就比较容易计算拖拽的距离了。很早之前就分享过拖拽的一个简单demo,拖拽指令也很简单:

    Vue.directive('draggable', {
      inserted: function (el,data) {
        el.style.position = 'absolute';
        el.style.cursor = 'move';
        el.onmousedown = function(event){
          let startX = event.clientX;
          let startY = event.clientY;
          let left = el.offsetLeft;
          let top = el.offsetTop;
          document.onmousemove = function(event){
            let X = event.clientX - startX
            let Y = event.clientY - startY;
            el.style.left = `${X + left}px`;
            el.style.top = `${Y + top}px`;
          }
          document.onmouseup = function(){
            document.onmousemove = document.onmouseup = null;
          };
        }
      }
    })
    

    这边只需要注意把监听元素绑定在document上,另外就是鼠标抬起的时候就移除监听。使用的时候:

    请拖拽

    起源地下载网 » vue拖拽指令之offsetX、clientX、pageX、screenX

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元