scrollTop为0时如何实现上滑?JS实现安卓滚轮时间选择器疑问
安卓风格JS滚轮时间选择器滚动实现逻辑
你观察到的scrollTop始终为0是完全正常的,这类自定义滚轮组件根本没有使用浏览器原生滚动能力,所有滚动效果都是完全自研实现的,核心逻辑如下:
- 组件直接监听了容器的
touchstart、touchmove、touchend移动端触摸事件,以及桌面端对应的鼠标事件,自行计算用户的滑动位移、速度这些参数 - 滚轮内的选项位移全部通过
transform: translateY()属性实时更新,全程不走浏览器的原生滚动布局流,自然不会修改scrollTop的数值 - 你遇到的scrollTop为0时无法上滑,是因为你用了原生滚动逻辑,原生滚动到顶部之后自然不能继续向上拉。而这个自定义滚轮自己内部维护了一套虚拟偏移量,没有和原生滚动的边界规则绑定,只要用户继续滑动,就会继续修改选项的偏移值,滑动停止后再做回弹、定位到选中项的处理
- 额外补充:这类组件要实现滚轮的3D透视效果、滑动惯性、选中项自动居中、循环滚动这些特性,也必须完全接管滚动逻辑,不会依赖原生scroll相关属性。
内容的提问来源于stack exchange,提问作者chikadance
相关产品推荐
相关产品推荐

