【问题标题】:Aspect ratio responsive Youtube video inside a flexbox弹性盒内的宽高比响应 Youtube 视频
【发布时间】:2020-07-22 14:39:40
【问题描述】:

.d1 {
  background-color: #f1f2f4;
  display: flex;
  padding: 4%;
}

.video-container {
  flex: 1;
  position: relative;
  padding-bottom: 56.25%; /* 16:9 */
  height: 0;
}

.video-container iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.d1>.text {
  flex: 1;
}
<div class="d1">
  <div class="video-container">
    <iframe src="https://www.youtube.com/embed/Vbg81kc56FU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  </div>
  <div class="text">
    Test
  </div>
</div>

我使用flexbox,它由左右部分组成,宽度相等。在左侧,我正在尝试插入一个应该具有响应性的 youtube 视频,但根据我的尝试,它没有保持其纵横比,但似乎有更高的高度。我该如何解决这个问题?

【问题讨论】:

  • 从 iframe 元素中移除 WIDTH 和 HEIGHT 属性。
  • 相同的结果...
  • @darkchampionz 您在哪个部分获得更多height。是.video-container 还是.text
  • 更新了我的答案...可能会让你更接近一点

标签: css iframe flexbox


【解决方案1】:

您可以尝试使用额外的包装器。如下所示

.d1 {
  background-color: #f1f2f4;
  display: flex;
  padding: 4%;
}

.video-container {
  flex: 1;
  background-color: red;
}

.video-container div {
  position: relative;
  padding-bottom: 56.25%;
  /* 16:9 */
}

.video-container iframe {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 100%;
}

.text {
  flex: 1;
}
<div class="d1">
  <div class="video-container">
    <div>
      <iframe src="https://www.youtube.com/embed/Vbg81kc56FU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
    </div>
  </div>
  <div class="text">
    Test
  </div>
</div>

jsfiddle

【讨论】:

    【解决方案2】:

    编辑:抱歉,没有很好地阅读您的问题:

    这种方法似乎效果更好一些: https://codepen.io/lokase/pen/JjGxpEJ

    .d1 {
      background-color: #f1f2f4;
      display: flex;
      padding: 4%;
    }
    
    .video-container {
      flex: 1;
      position: relative;
      padding-bottom: 56.25%; /* 16:9 */
      height: 0;
    }
    
    .video-container iframe {
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      display: block;
      width: 100%;
      height: 56.25%; /* 16:9 */
    }
    
    .text {
      flex: 1;
    }
    <div class="d1">
      <div class="video-container">
        <iframe src="https://www.youtube.com/embed/Vbg81kc56FU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
      </div>
      <div class="text">
        Test
      </div>
    </div>

    【讨论】:

    • 这确实有效,但它似乎在视频底部留下了一个空白区域。如果您在.video-container 中添加例如background-color: red;,您会明白我的意思=
    猜你喜欢
    • 2012-12-02
    • 2011-06-27
    • 2016-02-16
    • 1970-01-01
    • 2017-05-29
    • 2016-07-05
    • 2015-10-06
    • 2016-09-02
    • 2013-03-28
    相关资源
    最近更新 更多