Swiper组件中嵌入视频播放,但是进度条无法拖拽,点击
时间: 2024-02-24 20:53:22 浏览: 177
Angular6中使用Swiper的方法示例
如果你在Swiper组件中嵌入了视频播放,但是发现进度条无法拖拽或者点击调整播放进度,可能是因为Swiper组件自身的事件冲突导致的。此时可以尝试禁用Swiper组件的滑动事件,让视频播放组件接收到用户的拖拽和点击事件。
具体地,你可以在Swiper组件上使用`touchstart`和`touchmove`事件来禁止Swiper的滑动事件,然后在视频播放组件上使用`mousedown`和`mousemove`事件来接收用户的拖拽和点击事件。代码示例如下:
```javascript
var mySwiper = new Swiper('.swiper-container', {
// 禁用Swiper的滑动事件
on: {
touchstart: function(e) {
e.stopPropagation();
},
touchmove: function(e) {
e.stopPropagation();
}
}
});
// 视频播放组件的拖拽和点击事件
var video = document.getElementById('my-video');
var progress = document.getElementById('my-progress');
progress.addEventListener('mousedown', function(e) {
var rect = progress.getBoundingClientRect();
var x = e.clientX - rect.left;
var percent = x / rect.width;
video.currentTime = video.duration * percent;
});
progress.addEventListener('mousemove', function(e) {
if (e.buttons === 1) {
var rect = progress.getBoundingClientRect();
var x = e.clientX - rect.left;
var percent = x / rect.width;
video.currentTime = video.duration * percent;
}
});
```
在上面的代码中,`mySwiper`是一个Swiper组件的实例,`video`是一个视频播放组件的实例,`progress`是一个视频播放进度条的DOM元素。我们在Swiper组件上使用`touchstart`和`touchmove`事件来禁止Swiper的滑动事件,然后在视频播放组件上使用`mousedown`和`mousemove`事件来接收用户的拖拽和点击事件。注意,我们在`mousemove`事件中判断`e.buttons`是否为1,以确保只有在鼠标左键按下时才会调整视频播放进度。
阅读全文