vue 自定义指令(鼠标拖拽滑动)

这篇具有很好参考价值的文章主要介绍了vue 自定义指令(鼠标拖拽滑动)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、创建一个js文件

const dragscroll = (el) => {
    el.onmousedown = ev => {
        const disX = ev.clientX;
        const disY = ev.clientY; // 需要上下移动可以加
        const originalScrollLeft = el.scrollLeft;
        const originalScrollTop = el.scrollTop; // 需要上下移动可以加
        const originalScrollBehavior = el.style['scroll-behavior'];
        const originalPointerEvents = el.style['pointer-events'];
        el.style['scroll-behavior'] = 'auto';
        // 鼠标移动事件是监听的整个document,这样可以使鼠标能够在元素外部移动的时候也能实现拖动
        document.onmousemove = dv => {
            dv.preventDefault();
            const distanceX = dv.clientX - disX;
            const distanceY = dv.clientY - disY; // 需要上下移动可以加
            el.scrollTo(originalScrollLeft - distanceX, originalScrollTop - distanceY);   // 需要上下移动和左右移动
            // el.scrollTo(originalScrollLeft - distanceX, 0); // 不需要上下拖拽,y轴值为0
        };
        document.onmouseup = () => {
            document.onmousemove = null;
            document.onmouseup = null;
            el.style['scroll-behavior'] = originalScrollBehavior;
            el.style['pointer-events'] = originalPointerEvents;
        };
    };
};
export default dragscroll;

2、在main.js中引入这个js

import dragscroll from '@utils/directives.js';

app.directive('dragscroll',dragscroll);

3、在页面中使用

<ul class="navBar" id="nav" v-dragscroll>

<li>拖动1</li>

<li>拖动2</li>

<li>拖动3</li>

<li>拖动4</li>

<li>拖动5</li>

<li>拖动6</li>

<li>拖动7</li>

<li>拖动8</li>

<li>拖动9</li>

<li>拖动10</li>

</ul>

4、效果

vue 自定义指令(鼠标拖拽滑动)

 

参考文章(https://www.jianshu.com/p/6681c8b0a10a)文章来源地址https://www.toymoban.com/news/detail-500139.html

到了这里,关于vue 自定义指令(鼠标拖拽滑动)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue自定义指令directives+div跟随鼠标移动的floatButton组件

    项目需求 实现一个悬浮按钮,可在每个页面悬浮,为了不遮挡可以再浏览器可视区任意移动,并且不能移动出可是区域 实现方式 通过vue自定义指令,监听鼠标移动事件,计算位移,使元素移动, 效果: 可移动的悬浮按钮 1.实现代码 2.悬浮按钮组件 3.悬浮按钮样式 待优化点

    2024年02月10日
    浏览(37)
  • vue自定义指令添加跟随鼠标光标提示框v-tooltip

    在vue中添加自定义指令,能够识别dom,通过鼠标hover事件移入当前区域后,显示浮层 directives自定义提示指令 通过监听鼠标移入移出的mouse方法,设置浮层样式与出现时机 2、div显示dom标签v-tooltip 此时运行后,出现浮层

    2024年02月11日
    浏览(40)
  • 【sgRectSelect】自定义组件:Vue实现拖拽鼠标圈选、划区域、框选组件:矩形区域选中checkbox,并回调相关选中、取消选中的操作。

    边框线虚线动画效果请参阅 边框虚线滚动动画特效_虚线滚动效果_你挚爱的强哥的博客-CSDN博客 【代码】边框虚线滚动动画特效。_虚线滚动效果 https://blog.csdn.net/qq_37860634/article/details/130507289   碰撞检测原理请前往  原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,

    2024年02月09日
    浏览(61)
  • echarts部分图表自带鼠标滚轮滑动整体缩放效果与拖拽整体移动效果,如何取消?

    部分echarts图表在可视区域自带鼠标滚轮缩放和拖拽移动效果。这个效果在部分场景中是多余的, 怎么将其效果取消呢? roam:true(可拖动,可缩放);false(不可拖动,不可缩放) dome Tips 实现满足上诉需求的属性即 roam。 部分echarts图表类型 不存在roam属性,即该类型图表不支

    2024年02月04日
    浏览(37)
  • vue3自定义指令实现超出显示省略号,鼠标浮入弹出title,显示全部文本

    mounted 和 updated 是 Vue 生命周期钩子函数,分别表示 指令挂载到元素 和 指令所在组件更新时触发 。 el : HTMLElement 和 binding : DirectiveBinding 是方法参数, el 表示指令作用的元素, binding 包含指令的绑定值、参数和修饰符等信息。 el.offsetWidth 获取的是元素在渲染时所占据的整体

    2024年02月01日
    浏览(34)
  • JS创建DIV,实现鼠标拖拽效果

    题目:用原生js动态创建一个div,大小随意,挂在body上,实现鼠标拖拽效果 需要用到的鼠标事件: 1.鼠标按下(onmousedown), 2.鼠标移动(onmousemove) 3.鼠标抬起(onmouseup) 第一步:创建容器(每个页面,最大的容器是body对象,所有dom对象创建后默认都会放到body) 第二步,

    2024年02月13日
    浏览(35)
  • JS、Vue鼠标拖拽

    JS代码: Vue代码:

    2024年02月16日
    浏览(39)
  • 自定义滑动到底部触发指令,elementUI实现分页下拉框

    在 main.js 中添加 使用

    2024年02月11日
    浏览(27)
  • vue项目实现鼠标拖拽功能

    当鼠标按下鼠标移动的时候,记录移动中的 x、y 值,那么这个被拖拽的 dom 的 top 和 left 值就是: top=鼠标按下时记录的 dom 的 top 值+(移动中的 y 值 - 鼠标按下时的 y 值) left=鼠标按下时记录的 dom 的 left 值+(移动中的 x 值 - 鼠标按下时的 x 值)  

    2024年02月11日
    浏览(32)
  • vue实现简单的鼠标拖拽横向滚动和 鼠标滚轮横向滚动

    第一种,按住鼠标拖拽滚动 以下代码项目中直接使用即可,此种方法是通过鼠标拖拽进行滚动,滑动滚轮无效果。 当然快捷键,shift+鼠标滚轮可以控制横向滚动,对用户来说体验不友好。 css代码 第二种方法是通过鼠标的滚轮进行滚动 css代码

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包