全尺寸 YouTube 视频,所有宽高比,仅 CSS
TL:DR -工作小提琴
作为对@Hinrich 答案的更新/改进,我创建了一个仅适用于所有纵横比的 CSS 缩放器 - 甚至是极端情况。不是过度补偿宽度以适应大多数屏幕尺寸,而是使用vw
和vh
使用 CSStransform
属性设置 iframe(相对于元素而不是父元素进行偏移)。
大多数浏览器(IE9+ 和所有常青浏览器 AFAIK)都支持vw
andvh
单位,以及transform
s,所以这应该适用于几乎所有不需要 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>
使用 CSS 变量
对于那些使用 CSS 变量的人,您也可以这样做 (fiddle),它可以让您任意重用多个类名的大小:
:root {
--video-width: 100vw;
--video-height: 100vh;
}
@media (min-aspect-ratio: 16/9) {
:root {
--video-height: 56.25vw;
}
}
@media (max-aspect-ratio: 16/9) {
:root {
--video-width: 177.78vh;
}
}
.video-background {
position: relative;
overflow: hidden;
width: 100vw;
height: 100vh;
}
.video-background iframe {
position: absolute;
top: 50%;
left: 50%;
width: var(--video-width);
height: var(--video-height);
transform: translate(-50%, -50%);
}