首页 > 其他分享 >div小窗的拖动

div小窗的拖动

时间:2023-07-11 09:24:09浏览次数:47  
标签:function oDiv 拖动 let 小窗 div document

最近要做一个置顶聊天框的功能,想着要给他做成可以拖动的

一开始使用的是@mousedown+@mousemove+@mouseup来进行小窗口的拖动,但是出现拖动的时候小窗会闪烁,并且位置距离也不好把控,效果不好。然后借鉴了网上大神的帖子,使用v-drage和directives对div进行拖动

首先,在控件最外面的div中加入v-drag

然后写入directives(与methods和data()是同一级的)

   data(){

  ......

   },

 methods:{

    .......

 }

// 自定义指令 —— 拖动div     directives: {         drag(el) {             let oDiv = el // 当前元素             // let self = this // 上下文             // 禁止选择网页上的文字             document.onselectstart = function () {                 return false             }             oDiv.onmousedown = function (e) {                 // 鼠标按下,计算当前元素距离可视区的距离                 let disX = e.clientX - oDiv.offsetLeft                 let disY = e.clientY - oDiv.offsetTop                 document.onmousemove = function (e) {                     // 通过事件委托,计算移动的距离                     let l = e.clientX - disX                     let t = e.clientY - disY                     // 移动当前元素                     oDiv.style.left = l + 'px'                     oDiv.style.top = t + 'px'                 }                 document.onmouseup = function (e) {                     document.onmousemove = null                     document.onmouseup = null                 }                 // return false不加的话可能导致黏连,就是拖到一个地方时div粘在鼠标上不下来,相当于onmouseup失效                 return false             }         }     },

 最后就能拖动啦,很丝滑。

最后附上大佬的ui帖子https://blog.csdn.net/seeeeeeeeeee/article/details/126139493

v-drage实现的参考https://blog.csdn.net/weixin_44692055/article/details/128289481

 

标签:function,oDiv,拖动,let,小窗,div,document
From: https://www.cnblogs.com/luzanzan/p/17542927.html

相关文章

  • 从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简
    从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简单语义搜索、基于REfO的简单KBQA个人入门知识图谱过程中的学习笔记,算是半教程类的,指引初学者对知识图谱的各个任务有一个初步的认识。目前暂无新增计划。1.简介目标是包含百度百科、互动百......
  • 记录拖动排序
    最近项目中要做一个拖动排序功能,首先想到的是之前项目中用过的antd自带的tree和table的拖动排序,但是只能在对应的组建里使用。这里用的是自定义组件,随意拖动排序,所以记录一下实现流程react-dndantd组件的拖动排序都是用的这个库,使用比较灵活,但是要配置的东西比较多,需求复杂时使......
  • Codeforces Round 883 (Div. 3)
    CodeforcesRound883(Div.3)A.RudolphandCuttheRope:题意:有一个糖果由n个绳子悬挂,告诉每一个绳子位于的高度和宽度,问至少间断几根才可以让candy回到groud。思路:统计有几个宽度小于高度的绳子即可voidsolve(){intn;intnum=0;cin>>n;for(inti=1;i......
  • CF div3 883
    题目链接E2按值域分治的技巧前置:\(f(k,n)=1+k+k^2+...+k^n\)\(①\):假设答案最终的\(n=2\),对于\(1+k+k^2\),我们在\([2,10^9]\)的范围二分\(k\)即可\(②\):假设答案最终的\(n>2\),那么形式至少是\(1+k+k^2+k^3......
  • Codeforces Round 875 (Div. 2)(D)
    CodeforcesRound875(Div.2)(D)D(思维)这个题意是给你两个数组,\(a\)和\(b\),我们需要找到这样的二元组\((i,j)\)满足\(a_i\timesa_j=b_i+b_j\),问一共有多少组满足以上条件的二元组题目还告诉我们数组里面的数字都是不大于\(n\)的,那么因为两个数相乘的范围一定是\(1-n\)的,那......
  • CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!) A-E
    比赛链接A代码#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;boolsolve(){intn,m;cin>>n>>m;llsuma=0,sumb=0;for(inti=1,x;i<=n;i++)cin>>x,suma+=x;for(inti=1,......
  • Codeforces Round 882 (Div. 2)
    Preface这场现场打的,顶着第二天一早起来军训硬打到一点这场题目都是JOJO确实好评,但刚开始的评测姬爆让人很难顶啊,因为这个B题挂了一发没法第一时间改导致这场罚时裂开了这场写完D还有快50min,然后看一眼榜E出的人很少但是F好多人过然后就去想F,由于军训生物钟的缘故当时好困好困......
  • Codeforces Round 882 (Div. 2) C. Vampiric Powers, anyone?
    由题目观察可得,a[m+1]=a[i]^...a[m],,结合异或的性质a^b^a=b,可得如果在末尾添加一个a[m+1],a[m+1]会和末尾几个抵消掉,求得i~k这一段的异或和,k<m,因此通过该操作实际上我就可以求得所有长度连续区间的异或和,求其最大值,n=1e5+10,如果暴力求解肯定会超时,我们观察发现a[i]的范围为0~2^8......
  • Codeforces Round 882 (Div. 2) A-D
    ATheManwhobecameaGod 假设sum为omigaabs(a[i]-a[i-1])1<=i<=n 只有设置断点的时候,假设设置在t和t-1之间thevalue才会减少abs(a[t]-a[t-1]) 所以把差距最大的几个地方分段就行了#include<bits/stdc++.h>usingnamespacestd;#definemaxn400100#defi......
  • Educational Codeforces Round 151 (Rated for Div. 2) D. Rating System
    贪心由题可得,对于k的选择一定是单调递增的,对于前面选定的k后面选的k必须大于之前选的才会发生新的变化,因此k的选择其实是一个单调栈,由前缀和组成我们要想最后的结果最大,则k值一定要尽可能的高,例如当选中i为k值时,如果从i后面某个原本的前缀和要大于选k之后所得到的前缀和的话,说明......