yang625624461 2021-06-14 03:05 采纳率: 100%
浏览 533
已采纳

VUE中如何实现鼠标移动到某网页区域,屏蔽滚轮的功能

如图,这是一个用canvas库(fabric.js)生成的图像,用鼠标滚轮能使图像缩放。问题是用滚轮的同时,整个网页也会上下滚动。有没有办法让我鼠标停留在图像上滚动时,屏蔽网页的滚动。

我知道Vue有一个@scroll.prevent的写法,但是好像只能用在特定的组件上,如input.

如果用VUE不行的话,用原生js解决也行。

以下是滚轮实现canvas画布缩放的代码

  1. onMouseWheel(){
  2. // 滚动缩放画布大小
  3. this.canvas.on('mouse:wheel', (options) => {
  4. let zoom = (options.e.deltaY > 0 ? -0.1 : 0.1) + this.canvas.getZoom()
  5. // 最小为原来的1/10
  6. zoom = Math.max(0.1, zoom)
  7. // 最大是原来的3倍
  8. zoom = Math.min(5, zoom)
  9. // 在中心缩放
  10. const zoomPoint = new fabric.Point(this.canvas.width / 2, this.canvas.height / 2)
  11. this.canvas.zoomToPoint(zoomPoint, zoom)
  12. })
  13. }

——————————————————6月15日更新

贴出我最后实现的代码,唯一的缺点就是滚动条会消失

  1. window.onload = ()=>{
  2. let mapcover = document.getElementById("mapcover");
  3. console.log('执行了')
  4. mapcover.onmouseout = ()=>{
  5. document.documentElement.style.overflow='auto';
  6. }
  7. mapcover.onmouseover = ()=>{
  8. document.documentElement.style.overflow='hidden';
  9. }
  10. }

展开全部

  • 写回答

2条回答 默认 最新

  • 崽崽的谷雨 2021-06-15 01:53
    关注

    你可以试试给canvas绑定个mouseover和mouseout事件在这个里可以设置个禁用滚轮 类似这样https://www.cnblogs.com/linjiangxian/p/11460930.html ,其他方法都会很麻烦,比如鼠标移动获取坐标,之类的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    yang625624461 2021-06-15 03:22

    感谢回答,其实我今天刚好搞好了,就是用了这个方法,绑了mouseover和mouseout事件,不过好像和文章里的代码不太一样。

    回复
    崽崽的谷雨 回复 yang625624461 2021-06-15 03:25

    嗯我就是提供一个思路

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部