隐藏iPhone HTML5视频播放按钮

ily*_*lyo 56 iphone html5

我想要隐藏<video>元素上默认显示的大播放按钮

可能吗?

Ian*_*lin 107

我没有任何便于测试的iOS设备,但也许试试这个:

video::-webkit-media-controls {
    display:none !important;
}
Run Code Online (Sandbox Code Playgroud)

  • 截至2016年5月20日,这不再适用于移动Safari.请改用Arnaud的解决方案. (4认同)
  • 这个答案应该像所有要点一样. (3认同)
  • 仅供参考,这将隐藏所有HTML视频控件,而不仅仅是播放按钮占位符. (3认同)
  • 我不能让它在iOS 7上运行,所以我不得不回到使用Javascript修复... (2认同)
  • 使用`display:none`对我来说不起作用,即使在Safari 10.0.1.60,iOS 9.3.2上使用`!important`也是如此.`opacity:0`虽然有效,但是`position:absolute; 上:-9999px`. (2认同)

Dae*_*ron 64

似乎苹果再次改变了影子.

要隐藏播放按钮控件,您必须使用以下CSS:

/* This used to work for the parent element of button divs */
/* But it does not work with newer browsers, the below doesn't hide the play button parent div */

*::-webkit-media-controls-panel {
  display: none!important;
  -webkit-appearance: none;
}

/* Old shadow dom for play button */

*::-webkit-media-controls-play-button {
  display: none!important;
  -webkit-appearance: none;
}

/* New shadow dom for play button */

/* This one works! */

*::-webkit-media-controls-start-playback-button {
  display: none!important;
  -webkit-appearance: none;
}
Run Code Online (Sandbox Code Playgroud)

  • 在Safari 11.0.1中此功能无效。在Chrome中,一切正常。有人知道这是否仍然可行吗? (5认同)

Arn*_*der 56

看看Safari iOS中的影子DOM告诉我你想要的东西(只隐藏大的中央播放按钮)是:

video::-webkit-media-controls-start-playback-button {
  display: none !important;
}
Run Code Online (Sandbox Code Playgroud)

伊恩的答案隐藏了一切,包括文字轨道(隐藏字幕......)

  • 这在iOS 9中适用于我,并专门解决了原始海报的问题. (2认同)
  • 不适用于 iOS 14 或 15 :( (2认同)

Kam*_*kov 18

当设备处于“低功耗模式”时,较新的 iOS 版本会显示此类播放按钮。

  • 你只是让我花 9000 小时来调查这种行为 &lt;3 (4认同)

小智 9

在视频源文件中,您只需更改即可

controls= "false"
Run Code Online (Sandbox Code Playgroud)

对于Safari CSS,ios上的本机浏览器,你也可以试试这个hacky技巧

.custom-video-controls {
  z-index: 2147483647;
}
Run Code Online (Sandbox Code Playgroud)

这是关于管理/隐藏HTML 5视频控件的详细讨论的链接

http://css-tricks.com/custom-controls-in-html5-video-full-screen/

  • `controls="false"` 甚至应该让控件出现...... MDN 说它是一个布尔属性,只有它的存在很重要,而不是价值。 (2认同)

Nea*_*oni 8

2021 年 10 月更新

对于 iOS 13、14 和 15,所有答案都已过时。这似乎是因为 iOS 低功耗模式autoplay默认情况下会阻止浏览器中的所有视频(以节省电量)。

删除烦人的播放按钮的最佳方法是删除autoplay任何视频元素上的标签,并在有任何用户交互时开始播放视频。

反应示例如下:

 <video ref={playerRef} playsInline >
Run Code Online (Sandbox Code Playgroud)
let playVideo = (event) => {
   if (playerRef.current) {
      playerRef.current.play()
   }
}
Run Code Online (Sandbox Code Playgroud)

旁注:播放按钮隐藏在 Shadow dom 中,我无法弄清楚如何通过外部 CSS 修改甚至 JS 来隐藏。如果有人对如何隐藏 Shadow dom 元素有任何想法,那么这将是一个更好的解决方案。


小智 5

截至 2022 年 10 月 20 日,

我的解决方案是从视频元素中删除自动播放并在页面加载时使用 HTMLMediaElement.play() 。从 play() 返回的承诺将捕获播放视频的任何问题,否则视频将照常播放。我在 React 中的实现如下所示:

useEffect(() => {
  ref &&
    ref.current
      .play()
      .then(() => {})
      .catch((err) => {
        // Video couldn't play, low power play button showing.
      });   
}, []);
Run Code Online (Sandbox Code Playgroud)

这应该可以让我们不必处理不一致的 Shadow DOM 属性。

资源:

https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play