【问题标题】:Fully Responsive Video with Bootstrap使用 Bootstrap 的完全响应式视频
【发布时间】:2015-08-09 21:16:28
【问题描述】:

我正在设计一个包含视频和图像的全屏响应式网站。这意味着该网站永远不会大于您的屏幕尺寸。我正在使用 Bootstrap 3 来设计它;我对图像没有任何问题,但我对视频有很多问题。我正在使用 Bootstrap 的标准响应式视频嵌入:

<div class="col-sm-12 col-md-12 col-full-parent">
    <div class="embed-responsive embed-responsive-16by9">
        <iframe src="http://www.youtube.com/embed/..."></iframe>
    </div>
</div>

问题是,如果你改变宽度,它会调整大小,但如果你改变高度,它就不会。

关于如何解决这个问题的任何想法?

编辑:父 col 容器是它应该的最大高度和宽度,但它不适合它。

【问题讨论】:

  • embed-responsive-16by9 的目的是为嵌入的视频保持 16:9 的纵横比。如果删除该类,您会得到想要的结果吗?
  • 通常高度在响应时不会改变。您应该使用媒体查询来更改视频的高度
  • 如果我删除该类视频甚至不会显示,但我想保持 16:9 的比例但调整到屏幕,没有滚动条。
  • embed-responsive 的高度设置为所需的任何值(默认为 0)。
  • 它需要在他父母的最大高度,但将其设置为 100% 或 auto 并不能解决它。发生的情况是embed-responsive-16by9 使用填充而不是高度来保持比率。

标签: html css twitter-bootstrap video


【解决方案1】:

我最终找到了一个解决方案,而不是使用 css 而只是使用 javascript。它恰好适合他的父 div (#main_container) 中以 16:9 的比例尽可能大的视频 iframe (#iframe_youtube)

$( document ).ready(function() {
    resizeVideo();
} );

$(window).resize(function() {
    resizeVideo();
});

function resizeVideo() {
    var content = $('#main_container');
    var iframe = $('#iframe_youtube');

    var contentH = content.height();
    var contentW = content.width();
    var resH = (contentW * 9)/ 16;
    var resW = (contentH * 16)/ 9;

    if(contentH < resH) {
        resH = contentH;
    }
    if(contentW < resW){
        resW = contentW;
    }

    iframe.css('height',resH);
    iframe.css('width',resW);
}

【讨论】:

  • 您可能想检查窗口高度,而不是 main_container 的高度。除非您确保 main_container 永远不会高于您的窗口;)
猜你喜欢
  • 2013-11-16
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多