我的列表就像
<ul>
<li *ngFor="let minute of minuteArr">{{minute}}</li>
</ul>
和部分CSS:
ul {
overflow-y: auto;
height: 200px;
-webkit-overflow-scrolling: touch;
position: relative;
z-index: 1;
}
li {
height: 40px;
line-height: 40px;
}
我将滚动事件绑定到ul,并执行:
ul.scrollTop = [currentPos]
Math.abs(currentPos - lastPos)
> 500像素或较大像素时,我的列表将为空白。
我做了一些研究,并将代码更改为:
ul.style.WebkitOverflowScrolling = 'auto'
ul.scrollTop = [currentPos]
ul.style.WebkitOverflowScrolling = 'touch'
避免硬件加速。顺便说一句,-webkit-overflow-scrolling: touch;
是必需的,因为它可以使IOS内的滚动顺利进行。
然后解决空白问题。
但是现在问题变成了,在将WebkitOverflowScrolling重置为touch
之后,似乎两种效果同时存在:
ul可以惯性滚动(-webkit-overflow-scrolling:touch), 但实际上,当我计算其上一个位置与后滚动位置之间的距离时,它表明它滚动了手指移动的距离(-webkit-overflow-scrolling:自动)
在iPhone 8(IOS 12)上测试, 无法使用Android设备或IOS野生动物园进行复制。它只能在由Ionic生产的IOS App上中断
z-index:auto
,因为结果就像两层重叠一样(-webkit-overflow-scrolling:touch将创建一个堆叠上下文)但是全部失败了。
一个适当的解决方案/解决方法,可以解决此问题而不会引起任何麻烦的副作用,并感谢您解释为什么会发生这种情况。