缩放和重新定位iframe-like背景大小:封面

html,正文{
身高:100%;
保证金:0;
填充:0;
}
.尺寸{
身高:100%;
位置:相对位置;
背景:#eee;
溢出:隐藏;
填充:0;
}
.尺寸的iframe{
位置:绝对位置;
左:0;
排名:0;
宽度:100%;
身高:100%;
}
@介质(最小宽度:320px){
身高:200%;
前-50%;
}
@介质(最小宽度:640像素){
身高:180%;
前-40%;
}
<div class=“sized”>
<iframe src=”https://player.vimeo.com/video/135335257?autoplay=false“frameborder=“0”webkitallowfullscreen=”“mozallowfullscreen=”“allowfullscreen=”“&gt&lt/iframe>
&lt/部门>
<h3>原创视频&lt/h3>
<iframe src=”https://player.vimeo.com/video/135335257?autoplay=false“frameborder=“0”webkitallowfullscreen=”“mozallowfullscreen=”“allowfullscreen=”“&gt&lt/iframe&gt

当我在代码片段结果中发现cookies同源错误时,下面是一个镜像:

https://jsfiddle.net/07Lffw5x/2/embedded/result/

[编辑]也许这是一个更好的演示,如果与此相比,没有太大区别。。。为什么?[/编辑]

我试图为iframe复制一个背景大小的封面

问题是它似乎重新调整了视频的比例,只适用于更大的尺寸

问题:

重缩放是否可以在每个断点上生效?或者vimeo播放器可能会自己重新缩放

与Alvaro Menendez的答案类似,需要感谢Qwertman提供的这个答案stackoverflow.com/a/29997746/340962。我已经使用了“填充百分比”技巧,但这个答案巧妙地使用了视口单位,这对这项工作至关重要。

实施这种行为的关键是确保两件事:

  1. iframe始终保持与其视频内容16:9相同的纵横比。这将确保视频外部没有黑色“填充”
  2. 根据视口的大小,iframe始终填充高度宽度

保持元素纵横比的一种方法是使用“填充百分比”技巧,该技巧利用了顶部底部填充使用元素的宽度作为其值的基础。使用公式B/(A/100)=C%,我们可以计算填充所需的百分比。如果视频的比例为16:9,则转换为9/(16/100)=56.25

唯一的问题是,在您的情况下,水平轴和垂直轴都需要进行计算(因为我们不知道视口的尺寸),而此技巧不适用于填充以获得与高度相关的纵横比

html,正文{
身高:100%;
保证金:0;
填充:0;
}
.集装箱{
背景:#eee;
身高:100%;
溢出:隐藏;
填充:0;
位置:相对位置;
}
.内部{
左:50%;
最小身高:43.75%;
垫面:56.25%;
位置:绝对位置;
最高:50%;
转换:翻译(-50%,-50%);
宽度:100%;
}
.集装箱框架{
底部:0;
身高:100%;
左:0;
位置:绝对位置;
右:0;
排名:0;
宽度:100%;
}
<div class=“container”>
<div class=“内部”>
<iframe src=”https://player.vimeo.com/video/135335257?autoplay=false“frameborder=“0”webkitallowfullscreen=”“mozallowfullscreen=”“allowfullscreen=”“&gt&lt/iframe>
&lt/部门>
&lt/部门&gt

https://jsfiddle.net/w45nwprn/ (代码片段不显示视频,请参阅fiddle)

幸运的是,您希望视频适合整个屏幕,因此可以使用视口单位来计算纵横比,而不是百分比。这允许使用来计算与高度相关的宽度,反之亦然:

  • 左:50%,前50%和转换:翻译(-50%,-50%)是将iframe置于.container
  • 最小高度:100%和最小宽度:100%以确保高度和宽度决不小于容器的高度和宽度
  • 高度:56.25vw将根据视口的宽度设置高度。通过9/(16/100)=56.25计算得出
  • 宽度:177.7778vh将根据视口的高度设置宽度。通过16/(9/100)=177.7778计算得出

因为高度宽度永远不能低于100%,但必须保持正确的纵横比,视频将始终覆盖整个视口

html,正文{
身高:100%;
保证金:0;
填充:0;
}
.集装箱{
背景:#eee;
身高:100%;
溢出:隐藏;
填充:0;
位置:相对位置;
}
iframe{
框大小:边框框;
身高:56.25vw;
左:50%;
最小高度:100%;
最小宽度:100%;
转换:翻译(-50%,-50%);
位置:绝对位置;
最高:50%;
宽度:177.7778VH;
}
<div class=“container”>
<iframe src=”https://player.vimeo.com/video/135335257?autoplay=false“frameborder=“0”webkitallowfullscreen=”“mozallowfullscreen=”“allowfullscreen=”“&gt&lt/iframe>
&lt/部门&gt

https://jsfiddle.net/qk00ehdr/ (代码片段不显示视频,请参阅fiddle)

视口单元受到广泛支持,因此只要您不是针对旧浏览器,这种方法就应该有效

发表评论