vue中鼠标拖动触发滚动条的移动

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

前言

在做后端管理系统中,像弹窗或大的表单时,经常会有滚动条的出现,但有些时候如流程、图片等操作时,仅仅使用鼠标拖动滚动条操作不太方便,如果使用鼠标拖拽图片或容器来触发滚动条的移动就比较方便了

功能设计

如果要实现鼠标辅助触发滚动条的移动,需要借助 mousedown,mouseup,mousemove 三个事件,通过鼠标的移动来动态修改滚动条的scrollLeftscrollTop,来模拟实现滚动条的位置变更。
考虑到鼠标的拖动有独立和可复用性,可以创建一个类来封装鼠标事件,使用时只要把事件挂到指定的容器上,就可以实现功能的复用

1、创建鼠标移动事件类

创建move.js

// 鼠标移动滚动位置类
class Drag {
  constructor(vm) {
    this.dragWrap = vm;// 要挂载的容器
    this._dom = {};
    this._x = 0;
    this._y = 0;
    this._top = 0;
    this._left = 0;
    this.move = false;
    this.down = false;
    this.init.apply(this, arguments);
  }

  // 绑定事件
  init() {
    this.bindEvent();
  }

  // 给要素增加鼠标事件mousedown,mouseup,mousemove
  bindEvent() {
    var t = this;
    this.dragWrap.addEventListener('mousedown', function (e) {
      e && e.preventDefault();
      if (!t.move) {
        t.move = false;
        t.down = true;
        t._x = e.clientX;
        t._y = e.clientY;
        t._top = t.dragWrap.scrollTop;
        t._left = t.dragWrap.scrollLeft;
      }
    });
    this.dragWrap.addEventListener('mouseup', function (e) {
      e && e.preventDefault();
      t.move = false;
      t.down = false;
    });
    this.dragWrap.addEventListener('mousemove', function (e) {
      if (t.down) {
        e && e.preventDefault();
        t.move = true;
        let x = t._x - e.clientX;
        let y = t._y - e.clientY;
        t.dragWrap.scrollLeft = t._left + x;
        t.dragWrap.scrollTop = t._top + y;
      }
    });
  }
}
export default Drag;

在页面中使用

在页面中使用move.js类,实现鼠标移动触发滚动条位置的移动

<template>
  <div style="padding: 20px">
    <h2>div move</h2>
    <div ref="main" class="main">
      <div class="box">
        <div>1111111111111111111111</div>
      </div>
    </div>
  </div>
</template>
<script>
import Drag from './move.js';
export default {
  data() {
    return {};
  },
  mounted() {
    new Drag(this.$refs.main);
  },
  methods: {}
};
</script>
<style lang="scss" scoped>
.main {
  width: 400px;
  height: 400px;
  background-color: lightgray;
  overflow: auto;
}
.box {
  width: 500px;
  height: 500px;
  padding-top: 100px;
  background-color: red;
  text-align: center;
  cursor: pointer;
}
</style>

实现效果
vue拖动滚动条,Web前端开发,vue.js,javascript,css文章来源地址https://www.toymoban.com/news/detail-541691.html

到了这里,关于vue中鼠标拖动触发滚动条的移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序 movable-view 控制长按才触发拖动 轻轻滑动页面正常滚动效果

    今天写 movable-area+movable-view遇到了个头疼的问题 那就是 movable-view 监听了用户拖拽自己 但 我们小程序 上下滚动页面靠的也是拖拽 也就是说 如果放在这里 用户拖动 movable-view部分 就会永远触发不了滚动 那么 我们先可以 加一个 bindlongpress=\\\"longpressHandler\\\"事件 用户长按时触发 然

    2024年02月06日
    浏览(42)
  • 前端:横向滚动条,拖动进行左右滚动(含隐藏滚动条)

    /* 隐藏Webkit浏览器的滚动条 */ ul::-webkit-scrollbar {         display: none;  } 

    2024年02月10日
    浏览(42)
  • Qt获取鼠标移动事件,窗口内任意位置按下鼠标左键拖动窗口

    重写窗口的两个事件函数mousePressEvent和mouseMoveEvent即可: 在mousePressEvent 中,按下鼠标左键时,记录窗口坐标,其中窗口坐标的计算是由鼠标事件获取到鼠标在整个屏幕中的坐标(ev-globalpos()),然后再使用pos()获取到鼠标在窗口内的相对位置,两者之差就是窗口在整个屏幕上

    2024年02月12日
    浏览(60)
  • 【Unity功能】鼠标移动触发事件方法

     方法一:方法触发 注意:UGUI不能使用该方法 方法二:Event Trigger 注意:需要场景中包含EventSystem(在添加trigger组件后自动添加);UGUI可以使用 方法三:

    2024年01月25日
    浏览(32)
  • 【ant design vue的table设置scroll后出现滚动条的隐藏处理】

    当table列表内容需要y轴方向滚动时,我们添加并设置了scroll值,例如下: 效果如下: 此时,列表的表头及列表的底部(:scroll中不设置x,底部的滚动条也不会出现)也出现了滚动条,表格看起来不简洁,可以在css添加以下样式: 效果如下:

    2024年02月16日
    浏览(45)
  • vue | element-ui中 如何修改表格Table组件中滚动条的样式

    在Table表格中,当内容超出容器时就会出现滚动条,elemnt-ui自带的滚动条有时无法满足需求,那么我们可以通过css伪类来实现对滚动条的自定义。 滚动条由两部分组成的: 滑块:可以滑动的部分。 轨道:滚动条的轨道,即滑块的轨道。一般来说滑块的颜色比轨道的颜色深一

    2024年02月11日
    浏览(57)
  • matlab/simulink鼠标滚动设置成上下移动而不是缩放

    simulink一个我很不喜欢的功能是,鼠标滚动会让画面缩放而不是上下滚动,今天实在受不了了就把它改过来了,其实特别简单,半分钟就搞定~ 点击File,选择Simulink Preferences 选择editor,把Scroll wheel controls zooming(滚轮控制缩放)前面默认的勾选取消掉 完成!之后页面的缩放就

    2024年02月13日
    浏览(132)
  • vue实现滚动触发

    在 Vue 中,可以通过监听滚动事件来实现滚动触发的效果。具体方法如下: 在需要监听滚动事件的元素中添加一个 scroll 事件的监听器。 在对应的组件中定义 handleScroll() 方法。 在上述示例代码中,如果监听到滚动事件后,先将 scrollTop 变量更新为当前的滚动位置,然后利用防

    2024年02月07日
    浏览(29)
  • vue 封装一个鼠标拖动选择时间段功能

       

    2024年02月15日
    浏览(39)
  • 解决mp4视频无法拖动进度条的问题

    现象: 海康威视的监控摄像头保存的视频,,mp4格式, 大小1G。用PotPlayer播放器进行播放, 不拖动进度条的话可以正常播放, 但拖动进度条后, 视频无法正常播放, 在 PotPlayer 中的表现就是只有进度条在走,视频画面停留在拖动前的画面。 PS: 同时保存的有多个监控视频,

    2024年02月03日
    浏览(279)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包