【问题标题】:css flex keep iframe with the proper aspect ratiocss flex 保持 iframe 具有适当的纵横比
【发布时间】:2016-07-15 03:44:55
【问题描述】:

在一个简单的应用程序中,我嵌入了一个视频;图像比例为 630/315:

    ...
    .flex-x{
         display:flex;
         flex-direction:row;   
         height:200px;
    }
    .flex-x iframe{
         display: 1 1 auto;
    }
    ...

    <div class="flex-x">
       <iframe width="560" height="315" src="..." />
    <div>

问题是 iframe 按预期增长和缩小,但只有一个轴,没有保持纵横比。

有什么方法可以增加/缩小 x 和 y,保持纵横比?使用padding-bottom: 56.25%; (315/560) 修复当“宽度”减小到保持比率所需的以下时。

padding的宽度或高度都可以,但只有一个,所以限制max-width不是一个好的选择。

看起来 flex 仅在一个 flex-direction (行或列)中发生变化。

【问题讨论】:

  • 它应该可以工作,请注意将高度重置为自动,正确关闭标签(iframe)并使用元素(如根据您的比率示例设置高度的伪元素:codepen.io/anon/pen/RagJjg 现在您的问题很短,如果是单个 iframe ,那么 flex 可能不是真正需要的......
  • 这是简化版:页面非常复杂,有菜单和其他一些东西。是且必须 100% 符合 html5。谢谢。
  • 不知道你为什么被否决,似乎我之前的评论似乎没有用,所以我猜还有其他原因。注意:没有人投票结束您的问题。不过,我认为这有点太笼统了 :) 但是你得到了答案

标签: html css iframe flexbox


【解决方案1】:

响应式 iframe:

用您的 iframe 覆盖图像,它会像图像一样调整大小...

JSFiddle

HMTL:

<div class="wrapper">
  <div class="h_iframe">
    <!-- a transparent image is preferable -->
    <img class="ratio" src="http://placehold.it/16x9" />
    <iframe src="https://www.youtube.com/embed/5MgBikgcWnY" frameborder="0" allowfullscreen></iframe>
  </div>
</div>

CSS:

.wrapper {
  width: 80%;
  height: 100%;
  margin: 0 auto;
  background: #CCC
}

.h_iframe {
  position: relative;
}

.h_iframe .ratio {
  display: block;
  width: 100%;
  height: auto;
}

.h_iframe iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

【讨论】:

  • 此解决方案按预期工作,没有 flex css。任何图片编辑器创建的 16 像素 x 9 像素的小尺寸都可以完成这项工作。谢谢。
  • 最好是透明图片
猜你喜欢
  • 1970-01-01
  • 2015-09-04
  • 2020-03-16
  • 2012-08-25
  • 1970-01-01
  • 2014-10-07
  • 2020-06-08
  • 1970-01-01
  • 2018-09-28
相关资源
最近更新 更多