Web Vue Thinksns Spa(4) 下拉刷新
分析JoLoadMore.vue
下拉刷新很常见,核心是拦截默认的scroll/moving动作,用translateY来代替:
if (this.dragging && isPull && window.scrollY <= 0) {
// 阻止 原生滚动 事件
e.preventDefault()
//dy就是translateY的距离
this.dY = offsetY
this.pulling = true
this.$emit('onPull', this.dY)
}
第2个,下拉刷新不是一个独立的组件,需要配合1个可以scroll的元素:用于计算scrollTop的值.
function getScrollTarget (el) {
while (
el &&
el.nodeType === 1 &&
el.tagName !== 'HTML' &&
el.tagName !== 'BODY'
) {
const overflowY = document.defaultView.getComputedStyle(el).overflowY
if (overflowY === 'scroll' || overflowY === 'auto') {
return el
}
el = el.parentNode
}
return document.documentElement
}
mounted () {
this.scrollTarget = getScrollTarget(this.$el)o
}