【问题标题】:How can the extra space above/below HTML5 video in Safari be removed?如何删除 Safari 中 HTML5 视频上方/下方的额外空间?
【发布时间】:2019-06-05 00:56:06
【问题描述】:

我在 Safari(最新版本、桌面版和移动版)中看到一个奇怪的错误(仅),在 HTML5 视频的上方/下方添加了额外的空间。在某些情况下这可能没问题,但在我的情况下,它显示了用于解决 IE 视频/海报错误的背景图像。

我倾向于认为这是一个 Safari 错误,就好像我在开发工具或 JavaScript 中切换各种 CSS 属性一样,问题就消失了。 JS 方法可能可能是一个解决方案,但用户必须忍受无样式内容的闪烁,我更愿意在 CSS 级别解决或纠正该问题。 (我尝试了各种解决方法:设置视频高度、更改视频显示)

这是相关的 HTML:

<section class="series" style="display: block;">
  <video autoplay="" class="series-video series-video-desktop" loop="" muted="" playsinline="" poster="data:image/gif,AAAA" src="https://iandevlin.com/examples/speechapi-video/video/big-buck-bunny.mp4"
    style="background-image: url(http://fillmurray.com/1024/768);"></video>
</section>

... 和 CSS:

section {
  display: block;
  min-height: 100%;
  width: 100%;
}

video {
  background: none no-repeat 50% 50% transparent;
  background-size: contain;
  display: inline-block;
  height: auto;
  width: 100%;
}

另外,FWIW,这是我的 JS 修复:

window.addEventListener('load', function () {
  var xs = document.querySelectorAll('.series');
  [].slice.call(xs).forEach(function (x) {
    // doing this via CSS has no effect
    x.style.setProperty('display', 'block');
  });
});

JSFiddle

【问题讨论】:

  • 有趣。让您的背景图片与视频具有相同的宽高比不是一种选择吗?
  • 它现在并将出现在我的最终产品中。不幸的是,无论背景图像的大小如何,该空间仍然存在,并且设计要求要求视频容器的顶部与其前一个兄弟姐妹之间没有空间。

标签: html css safari mobile-safari


【解决方案1】:

我能够通过将width 替换为min-widthmax-width 来解决上述问题:

video {
  background: none no-repeat 50% 50% transparent;
  background-size: contain;
  display: inline-block;
  height: auto;
  /* width: 100%; */
  min-width: 100%;
  max-width: 999px;
}

Updated Fiddle

【讨论】:

  • 有趣的修复。肯定是来自 Safari 的奇怪行为。试着想想为什么它会首先这样做。
  • 是的,这是一个令人沮丧的问题。这类问题是我远离前端开发的很大一部分原因。我不敢相信他们仍然经常发生,我仍然在他们身上撕扯我的头发。 (我在修复 IE6 错误时咬牙切齿......)