判断元素是否在当前可视区域
//第一种情况 向上滑动 滑过顶部到不可见区域 :元素距顶部距离+元素本身高度 <= 0
//第二种情况 向下滑动 滑过底部到不可见区域:元素距顶部距离 > 屏幕可视高度
user-avatar为元素class名
this.$u.getRect('.user-avatar').then(rect => {
console.log(rect);
})
屏幕可视高度获取: uni.getSystemInfoSync().windowHeight
元素本身高度:class.height
解决video在不可视区域停止播放
情景:scroll-view中itemType为video
那么也就是说这里video的class不是唯一的,那我们可以使用两个class来控制一个video,
第一个来控制video的样式 第二个来标识单个video的唯一性
我这里使用的监听是scroll-view的@scroll()
当然如果你不是在滚动组件中使用的话 可使用onPageScroll参考链接
demo:
<video class="video-card" :class="'id'+data.id" :src="data.img" objectFit="cover" controls :id="'id'+data.id"
@play="videoPlayHandle('id'+data.id)">
onScroll() {
var that = this;
if (!that.$u.test.isEmpty(that.video)) {
this.$u.getRect('.' + that.video.id).then(rect => {
// console.log("元素距离"+JSON.stringify(rect));
if (rect.top <= 0) {
//第一种情况 向上滑动 滑过顶部到不可见区域
console.log("向上滑动false");
that.video.pause();
} else if (rect.top > this.windowHeight) {
//第二种情况 向下滑动 滑过底部到不可见区域
console.log("向下滑动false");
that.video.pause();
} else {
//可见区域
console.log("true");
}
})
}
},