在 iOS 14 中的 <video> 上隐藏播放按钮覆盖
Hide Play Button Overlay on <video> in iOS 14
我有一个约 2 秒的短视频,它在我正在制作的网站的背景中循环播放,当它通过 div 的透明部分出现时,会产生金属闪光的效果。看起来不错。问题是,当 iOS 设备处于低功耗模式时,视频不仅无法播放(这是可以接受的,我明白了),它还显示了一个大喇叭播放按钮,该按钮通过相同的透明屏幕显示div的部分。我需要摆脱它,但我发现的每个解决方案似乎都不适用于 iOS 14.
这是视频标签:
<video id="videoElement" src="copper.mp4" autoplay loop playsinline muted webkit-playsinline></video>
…和 CSS:
video#videoElement::-webkit-media-controls,
video#videoElement::-webkit-media-controls-start-playback-button,
video#videoElement::-webkit-media-controls-play-button,
video#videoElement::-webkit-media-controls-panel,
video#videoElement::-webkit-media-controls-container,
video#videoElement::-webkit-media-controls-overlay-play-button,
video#videoElement::-webkit-media-controls-enclosure {
display: none !important;
-webkit-appearance: none;
opacity: 0 !important;
}
您可以使用 JQuery 执行此操作。包括它:
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>
只要用户以任何方式与其设备进行交互,以下代码就会播放视频。这也可以作为常规 Safari 自动播放问题的解决方法。
<script type="text/javascript">
$('body').on('click touchstart', function () {
const videoElement = document.getElementById('videoElement');
if (!videoElement.playing) {
videoElement.play();
}
});
</script>
用户不与设备交互就无法触发视频播放(这可能是件好事)。
如果您想在启用低功耗模式时完全禁用播放(我们中的一些人会非常感谢您),您可以执行以下操作:
<script type="text/javascript">
var promise = $('#videoElement').play();
if (promise !== undefined) {
promise.then(_ => {
// Autoplay was successful
}).catch(error => {
$('#videoElement').remove()
});
}
</script>
我会进一步挖掘,看看是否有办法用纯 CSS 做到这一点,但我怀疑它是否会接近“稳定”。
我有一个约 2 秒的短视频,它在我正在制作的网站的背景中循环播放,当它通过 div 的透明部分出现时,会产生金属闪光的效果。看起来不错。问题是,当 iOS 设备处于低功耗模式时,视频不仅无法播放(这是可以接受的,我明白了),它还显示了一个大喇叭播放按钮,该按钮通过相同的透明屏幕显示div的部分。我需要摆脱它,但我发现的每个解决方案似乎都不适用于 iOS 14.
这是视频标签:
<video id="videoElement" src="copper.mp4" autoplay loop playsinline muted webkit-playsinline></video>
…和 CSS:
video#videoElement::-webkit-media-controls,
video#videoElement::-webkit-media-controls-start-playback-button,
video#videoElement::-webkit-media-controls-play-button,
video#videoElement::-webkit-media-controls-panel,
video#videoElement::-webkit-media-controls-container,
video#videoElement::-webkit-media-controls-overlay-play-button,
video#videoElement::-webkit-media-controls-enclosure {
display: none !important;
-webkit-appearance: none;
opacity: 0 !important;
}
您可以使用 JQuery 执行此操作。包括它:
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>
只要用户以任何方式与其设备进行交互,以下代码就会播放视频。这也可以作为常规 Safari 自动播放问题的解决方法。
<script type="text/javascript">
$('body').on('click touchstart', function () {
const videoElement = document.getElementById('videoElement');
if (!videoElement.playing) {
videoElement.play();
}
});
</script>
用户不与设备交互就无法触发视频播放(这可能是件好事)。
如果您想在启用低功耗模式时完全禁用播放(我们中的一些人会非常感谢您),您可以执行以下操作:
<script type="text/javascript">
var promise = $('#videoElement').play();
if (promise !== undefined) {
promise.then(_ => {
// Autoplay was successful
}).catch(error => {
$('#videoElement').remove()
});
}
</script>
我会进一步挖掘,看看是否有办法用纯 CSS 做到这一点,但我怀疑它是否会接近“稳定”。