使用HTML5 CSS3强制iframe YouTube视频居中,并在后台完全覆盖屏幕

时间:2014-07-04 19:10:00

标签: html css video background youtube-iframe-api

如何强制HTML5 iframe YouTube视频居中,最后使用CSS3 HTML覆盖全屏窗口背景?

例如" paypal.it "主页背景或" unity3d.com/5 "热门视频,有iframe youtube视频。 iframe覆盖全屏(缩放)并在重新调整窗口大小时覆盖所有宽度和高度。 它重新调整大小,保持100%最小宽度缩放高度或100%最小高度缩放宽度。

如何使用iframe HTML5和CSS3实现此效果?

代码示例HTML5

<div class="video" style="opacity: 1;">

    <iframe src="http://www.youtube.com/embed/AddHereVideoId?autoplay=1&amp;html5=1" frameborder="0" style="height: 720px;">
     </iframe>

</div>

代码CSS3 HTML最终将获得Java帮助。

3 个答案:

答案 0 :(得分:10)

全尺寸YouTube视频,所有长宽比,仅CSS

TL:DR-working fiddle

作为对@Hinrich答案的更新/改进,我创建了一个仅CSS的缩放器,该缩放器可用于所有纵横比-甚至包括极限。不会过度补偿宽度以适合大多数屏幕尺寸,而是使用vwvh设置iframe,并使用CSS transform属性(相对于元素,而不是相对于父)。

大多数浏览器(IE9 +和所有常绿浏览器AFAIK)都支持vwvh单位以及transform,因此,这几乎适用于所有浏览器不需要JavaScript

.video-background {
  position: relative;
  overflow: hidden;
  width: 100vw;
  height: 100vh;
}

.video-background iframe {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100vw;
  height: 100vh;
  transform: translate(-50%, -50%);
}

@media (min-aspect-ratio: 16/9) {
  .video-background iframe {
    /* height = 100 * (9 / 16) = 56.25 */
    height: 56.25vw;
  }
}
@media (max-aspect-ratio: 16/9) {
  .video-background iframe {
    /* width = 100 / (9 / 16) = 177.777777 */
    width: 177.78vh;
  }
}
<div class="video-background">
  <iframe src="https://www.youtube.com/embed/biWk-QLWY7U?controls=0&showinfo=0&rel=0&autoplay=1&loop=1&mute=1" frameborder="0" allowfullscreen></iframe>
</div>

答案 1 :(得分:8)

对于真正的全屏解决方案,可以这样实现:

HTML

<div class="video-background">
    <div class="video-foreground">
      <iframe src="https://www.youtube.com/embed/I4agXcHLySs?controls=0&showinfo=0&rel=0&autoplay=1&loop=1&mute=1" frameborder="0" allowfullscreen></iframe>
    </div>
  </div>

CSS

* { box-sizing: border-box; }
.video-background {
  background: #000;
  position: fixed;
  top: 0; right: 0; bottom: 0; left: 0;
  z-index: -99;
}
.video-foreground,
.video-background iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

@media (min-aspect-ratio: 16/9) {
  .video-foreground { height: 300%; top: -100%; }
}
@media (max-aspect-ratio: 16/9) {
  .video-foreground { width: 300%; left: -100%; }
}
@media all and (max-width: 600px) {
.vid-info { width: 50%; padding: .5rem; }
.vid-info h1 { margin-bottom: .2rem; }
}
@media all and (max-width: 500px) {
.vid-info .acronym { display: none; }
}

它并不完美,例如它不适用于容器的极高纵横比,但在大多数情况下做得很好。这是一个工作示例: https://codepen.io/anon/pen/zRVLGJ

答案 2 :(得分:3)

我认为这是你想要实现的目标:

.video-wrapper {position: relative; padding-bottom: 56.25%; /* 16:9 */  padding-top: 25px;}
.video-wrapper iframe {position: absolute; top: 0; left: 0; width: 100%; height: 100%;}

<div class="video-wrapper">
  <iframe src="http://www.youtube.com/embed/AddHereVideoId?autoplay=1&amp;html5=1" frameborder="0" allowfullscreen></iframe>
</div>

这将为您提供一个视频,填充它所在的容器,并自动缩放高度。

我最初在这里找到了这个解决方案:https://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php