微信小程序 使用scroll-view禁止滑动功能

本文介绍了一种在wxml中通过添加catchtouchmove属性来解决内部组件触摸事件冲突的方法。通过在组件内捕获并阻止事件传播,确保了页面中不同图表组件的触摸操作互不干扰。
<scroll-view class="scroll-view_H" scroll-x="false"   style="width: 100%; height:{{scroll_page_H}}px" scroll-left='{{scrollLeft}}'>
          <view class="fhbox scroll-view-item" style="height:{{Cbox}}"  catchtouchmove='catchTouchMove' >
            <ec-canvas id="mychart-dom-line" canvas-id="mychart-line" ec="{{ ecline }}"  bind:init="echartInit_load_line"></ec-canvas>
          </view>
          <view class="ydlbox scroll-view-item" catchtouchmove='catchTouchMove' >
            <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ecBar }}" bind:init='echartInit_electric_bar'></ec-canvas>
          </view>
      </scroll-view>

wxml部分代码 

主要解决方法在  内部组件里添加  catchtouchmove='catchTouchMove' 

 catchTouchMove(){
    return false;
  },

js部分 直接在组件内部捕获时间,并且阻止事件。

### 防止 `scroll-view` 组件发生滚动穿透的方法 为了有效防止 `scroll-view` 组件在 UniApp 微信小程序中发生滚动穿透现象,可以采取以下几种方法: #### 方法一:调整容器高度 通过设定 `scroll-view` 容器的高度来控制其行为。具体来说,可以通过设置 `scroll-view-container` 中的 `height` 属性为视口高度减去顶部导航栏或其他固定部分的高度,例如 `90vh`[^2]。 ```css .scroll-view-container { height: 90vh; } ``` 这种方法能够有效地限制 `scroll-view` 的可滚动范围,从而减少不必要的外层页面滚动。 #### 方法二:使用伪类隐藏滚动条 对于不需要显示滚动条的情况下,可以直接利用 CSS 来移除默认样式中的滚动条效果[^1]。 ```css ::-webkit-scrollbar { display: none; width: 0; height: 0; color: transparent; } ``` 这不仅美化了界面外观,同时也间接减少了因误触而导致的滚动事件传递给父级元素的可能性。 #### 方法三:处理事件冒泡与捕获机制 针对更复杂的场景下可能出现的操作冲突问题,则需进一步考虑 JavaScript 或框架自带的功能来进行干预。比如,在某些情况下可能会遇到点击或滑动手势被错误地分发给了背景页或者其他层级较低的内容区域。此时可以在覆盖层(如弹窗、菜单等)之上添加一层透明遮罩,并阻止触摸事件向上传播至下方节点[^4]。 ```html <template> <!-- ... --> <view class="overlay" @touchmove.stop.prevent></view> </template> <style scoped lang="scss"> .overlay { position: absolute; top: 0; bottom: 0; left: 0; right: 0; background-color: rgba(0, 0, 0, .3); } </style> ``` 上述代码片段展示了如何创建一个全屏大小且带有半透明黑色背景颜色的遮挡层,并绑定两个重要的手势处理器——`.stop` 和 `.prevent`,用于中断当前事件链并停止后续可能触发的动作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值