Plyr控制条移动端手指离开后不隐藏怎么办?
用Plyr做视频播放器时遇到个问题,移动端播放视频时控制条应该在手指离开屏幕3秒后自动隐藏,但设置了hideControls为true后完全没反应。尝试过调整CSS的transition属性和覆盖控制条容器的display属性,但手动隐藏后就无法重新显示了。
初始化代码是这样的:
const player = new Plyr('#player', {
controls: ['play-large', 'play', 'progress', 'current-time', 'mute', 'volume'],
hideControls: true,
tooltips: { controls: true },
});
查看文档说要通过控制data-plyr-control-hidden类来实现,但直接修改CSS.plyr__controls { opacity: 0 }后交互全失效了,有没有更好的解决办法?
正确的解决办法是通过JS来监听触摸事件,手动触发控制条的显示和隐藏。你可以试试下面这段代码:
这段代码的核心是用
touchstart事件代替默认的鼠标事件,然后通过classList来控制类名,而不是直接改CSS属性。这样既能保证交互正常,又不会破坏Plyr本身的逻辑。另外提醒一下,如果你发现控制条还是有问题,可以检查一下是不是其他CSS规则干扰了,特别是
pointer-events这个属性,有时候会被不小心覆盖掉。