<div class="video-container">
<video ref="videoElement" :src="videoSrc" loop playsinline webkit-playsinline muted></video>
</div>
export default {
data() {
return {
observer: null,
videoSrc:'' //视频地址
}
},
mounted() {
this.observer = new IntersectionObserver(this.handleIntersection, {
root: null,
rootMargin: '0px',
threshold: 0.8, // 设置阈值为80%,即视频可见面积超过50%触发播放
});
this.observer.observe(this.$refs.videoElement);
},
beforeUnmount() {
this.observer.unobserve(this.$refs.videoElement);
this.observer = null;
},
methods: {
handleIntersection(entries) {
entries.forEach((entry) => {
if (entry.isIntersecting) {
// 视频元素进入可视区域,播放视频
this.$refs.videoElement.play();
}
else {
// 视频元素离开可视区域,暂停视频
this.$refs.videoElement.pause();
}
});
},
},
}
注意:video自动播放时需要加上muted属性(静音)。