HTML5视音频-解决全屏下出现的控制栏

时间:2022-05-04
本文章向大家介绍HTML5视音频-解决全屏下出现的控制栏,主要内容包括发现问题、谷歌下、火狐下、分析问题、Shadow DOM的示例、效果、解决问题、效果、自定义的控制栏z-index的值、自定义的视频控制栏效果、总结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

HTML5学堂:HTML5视音频-解决全屏下的控制栏。HTML5可以简简单单的实现视频、音频的播放功能,功能虽好用,但是它的默认样式有点淡淡的忧伤,问题虽存在,解决的办法总是有的,今天我就给大家来分享一下解决视频全屏下出现的控制栏。

发现问题

video标签去除controls属性全屏下仍然出现控制栏

<video class="video-wrap" preload="auto" poster="../images/html5.png">
  <source type="video/webm" src="../video/baobao.webm"></source>
  <source type="video/ogg" src="../video/wildlife.ogg"></source>
  <source type="video/mp4" src="../video/wildlife.mp4"></source>
</video>

谷歌下

火狐下

分析问题

视频的控制栏不是标签?那是什么?

不是吧,控制栏是Shadow DOM。

Shadow DOM是指浏览器的一种能力,它允许在文档(document)渲染时插入一棵DOM元素子树,但是这棵子树不在主DOM树中

Shadow DOM的示例

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>HTML5Course - 梦幻雪冰</title>
  <link rel="stylesheet" type="text/css" href="reset.css" />
</head>
<body>
  <p>HTML5学堂、刘国利、陈能堡</p>
  <div id="shadow"></div>
  <script>
      var shadowEle = document.getElementById("shadow");


      var root = shadowEle.createShadowRoot();
      root.textContent = "我在你的心里面~";
  </script>
</body>
</html>

效果

影子宿主里面的内容没有被渲染,反而影子根里面的内容被渲染了出来。

解决问题

用伪选择器来解决播放器全屏下的控制栏(Shadow DOM)

video::-webkit-media-controls-enclosure {
  /*禁用播放器控制栏的样式*/
  display: none !important;
}

效果

自定义的控制栏z-index的值

视频的控制栏z-index的值为2147483647,自定义(自己实现的)的z-index必须大于2147483647的值。

自定义的视频控制栏效果

总结

1、禁用视频的控制栏

2、采用定位布局实现自定义视频控制栏,需要注意z-index的值。