首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩放iframe视频以适应网页

缩放iframe视频以适应网页
EN

Stack Overflow用户
提问于 2021-03-31 23:18:54
回答 1查看 640关注 0票数 1

我试图创建一个网页,它有一个没有声音播放的视频背景,我可以很容易地将它应用到一个使用html视频标签保存的视频中,但是当我使用iframe时,它看起来不适用,我想将嵌入样式设置成适合整个页面的样式,这样移动用户就可以看到它的大小来适应整个页面,而不仅仅是与页面相匹配,同时保持高宽比。

代码语言:javascript
复制
.banner {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
代码语言:javascript
复制
<div class="banner">
  <iframe title="vimeo-player" src="https://player.vimeo.com/video/76979871" width="100%" height="100%" frameborder="0" allow="autoplay;" allowfullscreen></iframe>
</div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-01 22:47:05

Vimeo似乎以与object-fit: contain相同的方式显示视频--也就是说,它显示的是完全高度或全宽度的未裁剪视频,这取决于视频的纵横比与视口的关系。

要求是以与object-fit: cover相同的方式显示视频--也就是说,整个视口被视频覆盖,或者边被裁剪,或者顶部和底部取决于视频的纵横比与视口的关系。

这可以使用Javascript函数来实现,在加载视频或调整窗口大小时,可以使用Javascript函数检查实际的视口尺寸与视频的纵横比。然后使用transform: scale..扩展视频以满足需要。

在这个片段中,我们假设视频的纵横比为16/9。虽然这是一个非常普遍的比率,但是如果要使用不同的视频,可能需要一些代码来获得实际的纵横比。

下面是代码,注意它不能作为一个如此代码段工作,可能是因为嵌套的iframes (?)但是它已经在Windows 10和各种仿真器上进行了边缘/Chrome测试,并且工作正常。容器(=横幅)已放置在外部容器中,其位置固定在此演示中,但当然,如果合适,则移除并使用主体。

代码语言:javascript
复制
<style>
body {
    margin: 0;
    padding: 0;
}
.outer-container {
    position: fixed;
    top: 0;
    left: 0;
    margin: 0;
    padding: 0;
    width: 100vw;
    height: 100vh;
}  
.container {
    position: relative;
    height: 100%;
    width: 100%;
    margin: 0;
    padding: 0;
    background-color: yellow;
}
.video{
    position: absolute;
    top: 0;
    left: 0;
    margin: 0;
    padding: 0;
    width: 100%;
    height: 100%;
    transform-origin: 50% 50%;
}
</style>
<div class="outer-container">
<div class="container">
   <iframe class="video" src="https://player.vimeo.com/video/76979871?autoplay=1&loop=1&autopause=0&mute=1" frameborder="0" allow="autoplay"></iframe>
</div>
</div>
<script>
const vid = document.querySelector('.video');
const ratio = 16/9; //!you may need to 'ask' to find out the correct ratio, this is the one for this video and is common.
function resize() {
  const w = window.innerWidth;
  const h = window.innerHeight; 
  const scale =  ((w / h) > ratio) ? (w / (ratio * h)) : (h * ratio / w);

  vid.style.transform = 'scale(' + scale + ')';
}
vid.onload = resize;
window.onresize = resize;
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66896495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档