【问题标题】:Vimeo iframe is not displayed at the top of the divVimeo iframe 不显示在 div 的顶部
【发布时间】:2020-02-22 17:35:43
【问题描述】:

我正在尝试根据屏幕尺寸显示 Vimeo iframe。

我写了以下

.wrapper {
  display: flex;
  flex-wrap: wrap;
  min-height: 300px;
  border: 1px solid black;
}

.player {
  flex: 0 0 66.667%;
  max-width: 67%;
}

.lessons {
  flex: 0 0 33.33%;
  max-width: 33.33%;
  border: 1px solid black;
}
<div>
  Title
</div>
<div class="wrapper">
  <div class="player">
    <iframe src="https://player.vimeo.com/video/261210430?title=0&byline=0&portrait=0" width="100%" height="100%" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>
  </div>
  <div class="lessons">
    Lessons
  </div>
</div>

我想要一个框来捕获 2/3 的宽度,另一个框用于播放列表来捕获其余部分。这不需要准确 - 但想法是有一个播放器和一个播放列表,并且视频 iframe 应该从 div 的顶部 0 开始。

但正如您在https://jsfiddle.net/zv6Lgaq7/1/ 中看到的那样,视频不是从顶部 0 开始并捕获 div 的完整大小。

我做错了什么?

【问题讨论】:

  • 你看到了什么行为?
  • 这很正常,因为视频(制作视频的图像)保持相同的(宽度/高度)值
  • @evgenifotia 我希望视频至少从顶部开始 - 如您所见,有一个空白
  • @Roy 视频不是从帧的顶部开始,而是有一个边距

标签: html css flexbox


【解决方案1】:

这是 js 的方法

function updater() {
  fetch('https://vimeo.com/api/oembed.json?url=https://player.vimeo.com/video/261210430', {method: 'GET'})
  .then(function(response) {
    return response.json();
  })
  .then(function(data) {
    const pw = document.getElementById('iframe').offsetWidth
    const h = data.height*pw/data.width

    document.getElementById('player').style.height = h+'px'
  });
}

updater()

https://jsfiddle.net/j70kquLo/

这个CSS更好https://jsfiddle.net/c7a0wdm5/

【讨论】:

  • 它总是有效吗?我尝试扩大 jsfiddle 的输出窗口的宽度,然后刷新它仍然会显示边距
  • @Dejell 发生这种情况是因为当宽度足够大时,顶部和底部没有边距。我修好了
  • 仍然无法在更宽的屏幕上使用。尝试展开结果窗口并刷新
  • @Dejell 现在检查链接我认为这就是您要寻找的。我稍微改了一下 CSS
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 2015-05-26
相关资源
最近更新 更多