全页面背景视频样式

Avatar of Chris Coyier
Chris Coyier on

DigitalOcean 提供适用于您旅程每个阶段的云产品。 立即开始使用 $200 免费赠送额度!

我敢打赌您一定见过。 占据整个浏览器窗口的视频背景。 它上面有文本(因此,称为“背景”),这是一种您每天都看不到的有趣效果。 您可能没有看到它的最大原因是您无法将电影文件设置为 CSS 中的 background-image。 您必须做一些布局技巧才能完成它。

当然,全页面背景视频可能有点过分。 我认为可以恰到好处地完成它。 我对设计理念的争论没有特别感兴趣(也许下次再说),而是关于在需要时如何完成它,以及它可能采取的不同模式。

仍然值得一提的是这里关于美感的要点

  • 没有声音。 至少默认情况下是这样。 选择性声音是可以接受的。
  • 尊重带宽。 视频是您可以在网站上放置的最重的东西,而这正是一种人们没有明确要求的视频,因此要注意这一点。
  • 保持可访问性。 您可能在视频顶部放置文本,因此请确保它有足够的对比度以可读。

让我们以蒙大拿风格来做这件事,以纪念 Media Temple 和我一起前往拜访 ZaneRay 的旅行。

全页面背景视频的实现方法

我们很幸运。 Dudley Story 已经对此进行了大量的研究,并有一个不错的设置我们可以使用。 他也有 一个演示页面

当然,我们需要将视频放在页面上,所以这里就是这样

<video playsinline autoplay muted loop poster="polina.jpg" id="bgvid">
  <source src="polina.webm" type="video/webm">
  <source src="polina.mp4" type="video/mp4">
</video>

那里有很多属性! poster 属性为视频提供了一个图像,在视频加载时或视频根本无法加载时显示。 您可能想在 CSS 中使用 background

autoplay 属性在那里,因为我们希望视频自动播放。 请记住,我们在这里要保持美观,因此这没问题。 没有 controls 属性,因此用户无法启动/停止视频。 playsinline 属性是为了使它在 iOS 上工作。 muted 属性只是出于美观考虑(视频本来就不应该有音频,而且在 iOS 上还需要它才能让自动播放正常工作。 然后 loop 使它,嗯,循环播放。

要使用视频覆盖整个页面,您可以这样做

video {
  object-fit: cover;
  width: 100vw;
  height: 100vh;
  position: fixed;
  top: 0;
  left: 0;
}

这将使您获得全页面视频! 好极了!

现在让我们看看一些模式。 处理全页面视频只有一个方法,但我们可以做很多事情。

只有一个视窗

我们已经将视频放到了合适的位置。 现在我们可以在它上面设置任何我们想要的东西。

使用一些类似这样的文本

<header class="viewport-header">
  <h1>
    Explore
    <span>Montana</span>
  </h1>
</header>

我们可以将它放在视频之后,并使用相对定位,这样它就会显示在顶部。 然后应用一些居中

.viewport-header {
  position: relative;
  height: 100vh;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
}

我们得到了最简单的效果

查看 CodePen 上的
全页面视频:基本
by Chris Coyier (@chriscoyier)
on CodePen.

我们也可以将我们喜欢的其他任何东西定位在页面的任何位置。 它并不特别流行,但我们甚至可以放下一个独立滚动的文本区域,这样“全页面”效果就会保持完整。

查看 CodePen 上的
全页面视频:子滚动
by Chris Coyier (@chriscoyier)
on CodePen.

一个视窗标题,滚动消失

视频可以保持全屏,并让其他元素滚动消失。 标题没有理由保持固定! 在此演示中,标题文本(仍然完全填充视窗)会滚动消失,而正文内容会像您预期的那样出现。 它甚至稍微透明,仍然显示后面的视频。

查看 CodePen 上的
全页面视频:先全屏然后滚动
by Chris Coyier (@chriscoyier)
on CodePen.

一个视窗标题,内容滚动到标题之上

我们放置在视频上的标题文本可以保持固定,而内容可以向上滑动到它上面。 实现这一点的一种方法是固定定位视频和标题,但仍然确保主要内容被推到视窗之外,方法是使用 margin-top: 100vh;

查看 CodePen 上的
全页面视频:滚动并隐藏
by Chris Coyier (@chriscoyier)
on CodePen.

进一步扩展,我们可以将一些不透明度和缩放更改连接到滚动位置,并在滚动时使标题文本淡化到背景中。 使用 CSS 自定义属性很容易实现! 这里有 该演示

查看 CodePen 上的
全页面视频:滚动并缩小
by Chris Coyier (@chriscoyier)
on CodePen.


一个想法,多种方法!