css – 缩放和重新定位iframe,如background-size:cover

前端之家收集整理的这篇文章主要介绍了css – 缩放和重新定位iframe,如background-size:cover前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
html,body {
  height: 100%;
  margin: 0;
  padding: 0;
}
.sized {
  height: 100%;
  position: relative;
  background: #eee;
  overflow:hidden;
  padding:0;
}
.sized iframe {
  position:absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}
@media (min-width: 320px) {
  height: 200%;
  top: -50%;
}
@media (min-width: 640px) {
  height: 180%;
  top: -40%;
}
<div class="sized">
  <iframe src="https://player.vimeo.com/video/135335257?autoplay=false" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
</div>

<h3>Original video</h3>
<iframe src="https://player.vimeo.com/video/135335257?autoplay=false" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>

因为我得到一个cookies相同的来源错误的片段结果,这里是一个镜像:

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

可能this是一个更好的演示,如果你比较this one,没有太大的区别…为什么? [/编辑]

我正在尝试重现一个iframe的背景大小的封面。

事实是,似乎重新缩放视频,只有更大的尺寸,

题,

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

解决方法

类似于Alvaro Menendez的答案,信用需要转到这个答案stackoverflow.com/a/29997746/3400962由Qwertman。我得到了使用“填充百分比”的技巧,但这个答案巧妙地使用了视口单位对于这个工作来说至关重要。

实现这一行为的关键是确保两件事情:

> iframe总是保持与其视频内容16:9相同的宽高比。这将确保视频外部不存在黑色“padding”
> iframe根据视口的大小总是填满高度或宽度

保持元素宽高比的一种方法是使用“padding percentage” trick,它利用顶部和底部填充使用元素的宽度作为其值的基础。使用公式B /(A / 100)= C%,我们可以计算填充所需的百分比。鉴于视频的比例为16:9,转换为9 /(16/100)= 56.25。

唯一的问题是,在你的情况下,水平轴和垂直轴都需要计算(因为我们不知道视口将是什么尺寸),而这个技巧将不能用左右的填充来获得宽高比关系到身高。

html,body {
    height: 100%;
    margin: 0;
    padding: 0;
}
.container {
    background: #eee;
    height: 100%;
    overflow: hidden;
    padding: 0;
    position: relative;
}
.inner {
    left: 50%;
    min-height: 43.75%;
    padding-top: 56.25%;
    position:absolute;
    top: 50%;
    transform: translate(-50%,-50%);
    width: 100%;
}
.container iframe {
    bottom: 0;
    height: 100%;
    left: 0;
    position:absolute;
    right: 0;
    top: 0;
    width: 100%;
}
<div class="container">
    <div class="inner">
        <iframe src="https://player.vimeo.com/video/135335257?autoplay=false" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
    </div>
</div>

https://jsfiddle.net/w45nwprn/(片段不显示视频,请参阅小提琴)

幸运的是,在您的情况下,您希望视频适合整个屏幕,因此视口单位可用于计算宽高比而不是百分比。这允许用于计算相对于高度的宽度,反之亦然:

>左:50%;上:50%;并转换:翻译(-50%,-50%);需要将iframe放在.container中
> min-height:100%;和最小宽度:100%;需要确保高度和宽度不会小于.container的高度和宽度
> height:56.25vw;将设置与视口宽度相关的高度。这是通过做9 /(16/100)= 56.25来计算的
> width:177.77777778vh;将设置与视口高度相关的宽度。这是通过做16 /(9/100)= 177.77777778计算的

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

html,body {
    height: 100%;
    margin: 0;
    padding: 0;
}
.container {
    background: #eee;
    height: 100%;
    overflow: hidden;
    padding: 0;
    position: relative;
}
iframe {
    Box-sizing: border-Box;
    height: 56.25vw;
    left: 50%;
    min-height: 100%;
    min-width: 100%;
    transform: translate(-50%,-50%);
    position: absolute;
    top: 50%;
    width: 177.77777778vh;
}
<div class="container">
    <iframe src="https://player.vimeo.com/video/135335257?autoplay=false" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
</div>

https://jsfiddle.net/qk00ehdr/(片段不​​显示视频,请参阅小提琴)

Viewport units are widely supported,所以只要你不是针对旧的浏览器,这个方法应该工作。

原文链接:https://www.f2er.com/css/218798.html

猜你在找的CSS相关文章