使用 CSS 旋转视频并使其适合屏幕

Rotate a video and fit it to screen using CSS

我有以下风格:

video {
    position: absolute;
    transform: rotate(90deg);
    width: 100%;
    height: 100%;
    z-index: 4;
    visibility: visible;
}

这是视频元素:

<video id="myVideo" src="/Space4.mp4" autoplay loop></video>

这似乎将视频旋转并居中,但它几乎是屏幕尺寸的 1/4。怎样让它适合屏幕?

在这种情况下,新的 CSS3 单元就派上用场了。如果您只是使用正常百分比来指定 <video> 元素的 widthheight,它们将默认将这些尺寸与其视口对应物相关联 - 但仅在旋转之前。因此旋转后,这些值将不再正确对应视口尺寸。

由于在这种情况下您实际上想要相反的结果,因此您可以使用 height: 100vwwidth: 100vh 明确指定您希望 height 根据视口宽度进行测量,并且 width 在视口高度方面。

如果尺寸正确,您还需要更改视频旋转的点。否则,很难将视频的边缘与视口的边缘对齐,如这个专业制作的视觉示例所示:

经过这次调整,最后一步就是将视频向上移动一定量,以使其与视口顶部齐平。这个数额是多少?嗯,视频的 height - 我们指定为 100vw。 (我为此使用了否定 margin-top。)

实施这些更改(并设置 object-fit: cover 因此没有空格可见),我们最终得到:

html,
body {
  margin: 0; /* Because annoying default browser margins */
}
video {
  position: absolute;
  transform: rotate(90deg);

  transform-origin: bottom left;
  width: 100vh;
  height: 100vw;
  margin-top: -100vw;
  object-fit: cover;

  z-index: 4;
  visibility: visible;
}
<video id="myVideo" src="http://html5demos.com/assets/dizzy.mp4" autoplay loop></video>

希望这对您有所帮助!如果您有任何问题,请告诉我。