adui
Version:
<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>
20 lines (17 loc) • 792 B
text/typescript
const preventOuterScroll = (e: any) => {
const { currentTarget: saveThis, deltaY: delta } = e
const { scrollTop, scrollHeight } = saveThis
const height = saveThis.clientHeight
// const delta = (event.wheelDelta) ? event.wheelDelta : -(event.detail || 0)
// 这一句是原生获取 delta 的写法,
// React Wheel Events 让我们不用考虑兼容性,可以通过 e.deltaY 直接拿到,
// 然而这个值 和 原生的 delta 是相反数,因此以下的 < > 号及 -1 * ,均与原生情况相反。
if (delta > 0 && scrollHeight - height - scrollTop <= delta) {
saveThis.scrollTop = scrollHeight
e.preventDefault()
} else if (delta < 0 && scrollTop <= -1 * delta) {
saveThis.scrollTop = 0
e.preventDefault()
}
}
export { preventOuterScroll }