起初是最外框用iscroll滚动,文本框里的滚动条没有操作反应,于是给文本框也添加iscroll实例化。这时候发现
iscroll嵌套着iscroll,当滑动文本框时,最外框也跟着同步滚动,请问怎么写才能不触发最外框iscroll操作。
或者怎么弄让外框和文本框各滚各的?
起初是最外框用iscroll滚动,文本框里的滚动条没有操作反应,于是给文本框也添加iscroll实例化。这时候发现
iscroll嵌套着iscroll,当滑动文本框时,最外框也跟着同步滚动,请问怎么写才能不触发最外框iscroll操作。
或者怎么弄让外框和文本框各滚各的?
我也遇到了这样的问题,不过在 iscroll
的 issue
上已有解答方案,亲测有效,基本思路:
const innerScroll = new IScroll($inner, {
ouseWheel: true,
tap: false,
scrollbars: true,
interactiveScrollbars: true,
preventDefault: true,
mouseWheel: true
});
// 滚动时禁用外层滚动,内层滚到顶或滚到底重新启用外层滚动,滚动结束也重新启用外层滚动
innerScroll .on('scrollStart', function () {
if ((this.directionY === 1 && this.y === this.maxScrollY) || (this.directionY === -1 && this.y === 0)) {
outScroll && outScroll.enable();
} else {
outScroll && outScroll.disable();
}
});
innerScroll .on('scrollEnd', function () {
outScroll&& outScroll.enable();
});
参考 github
的 issue
10 回答11.2k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
楼主是不是把默认的滚动事件给禁止了。
如果你禁止了默认的滚动事件这个时候文本内容溢出的时候,你滚动确实没有效果。
个人认为只要文本框不是作为外面第一个滚动的div的一级子元素实现各执滚动式ok的。但是你要有两个实例化的对象,他们两者不能共用一个,且文本框的有一个父元素,和第一个滚动的div一样。