滚动'水平可滚动div元素'也可以使父滚动

时间:2018-05-18 12:59:25

标签: javascript html css reactjs

我已经实现了一个TabbarController,用户可以在其中滑动不同的标签。我通过添加'touchstart','touchmove'和amp;来实现这一目标。 'touchend'事件。所有选项卡都有一个可水平滚动的元素,滚动时会导致在父级上调用“touchmove”,这会导致父级和子级同时滚动。是否可以将滚动限制为子/限制触摸事件从子节点传递给父节点?

我尝试在父div上使用'overflow:hidden',并尝试在触摸事件中使用'prevendefault()'。

1 个答案:

答案 0 :(得分:0)

我终于写了一个解决方案来迎合我的问题。当Event回调传播回添加了侦听器的Parent元素时,我遍历DOM对象以检查子元素的可滚动区域。 如果当前触摸的孩子具有可滚动内容,则不会为父母处理触摸事件。

var element:HTMLElement = event.target;
var cancel:boolean = false;

while (element && element.parentElement){
      if (element.scrollWidth > element.clientWidth){
          cancel = true;
          break;
      }
          element = element.parentElement;
}