使用Bootstrap的自适应iframe


100

我正在使用Bootstrap。

我的文字包含2或3个基于iframe的嵌入视频。

该数据是从数据库中获取的。

如何使这些iframe响应?

示例代码:

<div class="row">

   <div class="col-lg-12 col-md-12 col-sm-12">

     SOME TEXT SOME TEXT SOME TEXT SOME TEXT
     SOME TEXT SOME TEXT SOME TEXT SOME TEXT

     <iframe src="http://youtube.com/...."></iframe>

     SOME TEXT SOME TEXT SOME TEXT SOME TEXT
     SOME TEXT SOME TEXT SOME TEXT SOME TEXT

     <iframe src="http://youtube.com/...."></iframe>


     SOME TEXT SOME TEXT SOME TEXT SOME TEXT
     SOME TEXT SOME TEXT SOME TEXT SOME TEXT

     <iframe src="http://youtube.com/...."></iframe> 

   </div>

</div>

这是一个动态数据。我该如何做出回应?



1
最好注意哪个版本的Bootstrap。我用两个选项回答了这个问题。
克里斯蒂娜(Christina)

Answers:


215

选项1

使用Bootstrap 3.2,您可以将每个iframe包装在您选择的响应式嵌入式包装器中:

http://getbootstrap.com/components/#sensitive-embed

<!-- 16:9 aspect ratio -->
<div class="embed-responsive embed-responsive-16by9">
  <iframe class="embed-responsive-item" src="…"></iframe>
</div>

<!-- 4:3 aspect ratio -->
<div class="embed-responsive embed-responsive-4by3">
  <iframe class="embed-responsive-item" src="…"></iframe>
</div>

选项2

如果您不想包装iframe,则可以使用FluidVids https://github.com/toddmotto/fluidvids。在此处查看演示:http : //toddmotto.com/labs/fluidvids/

   <!-- fluidvids.js -->
    <script src="js/fluidvids.js"></script>
    <script>
    fluidvids.init({
      selector: ['iframe'],
      players: ['www.youtube.com', 'player.vimeo.com']
    });
    </script>

2
无法降低高度iframe。我从100%80%课改了.embed-responsive iframe。但是正在给空白。在视频之后。如何避免这个空间。
SatyaTNV

最终,这很完美!<p>Your browser does not appear to support iframes</p>iframe标签之间包含强制性内容可能会很好,但是我想知道这些天是否还有意义...再次感谢,许多(骇客的)解决方案已经接近,但这很完美!
svenevs


24

请检查一下,希望对您有所帮助

<div class="row">
 <iframe class="col-lg-12 col-md-12 col-sm-12" src="http://www.w3schools.com">
 </iframe>
</div>

谢谢!终于,一些简单的实际可行了。
Fatimaezzahra Rarhibou

13

对我来说最有效的最佳解决方案是在以下链接中找到的一种解决方案:https : //bootstrapmaster.com/implement-sensitive-youtube-vimeo-embed-iframe-twitter-bootstrap-3/

您必须:将此代码复制到主CSS文件中,

.responsive-video {
    position: relative;
    padding-bottom: 56.25%;
    padding-top: 60px; overflow: hidden;
}

.responsive-video iframe,
.responsive-video object,
.responsive-video embed {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

然后将您嵌入的视频

<div class="responsive-video">
    <iframe ></iframe>
</div>

而已!现在,您可以在网站上使用自适应视频。


1
padding-bottom: 56.25%;做一些奇怪的东西
Emidomenge '16

9

因此,YouTube发出了如下iframe标签:

<iframe width="560" height="315" src="https://www.youtube.com/embed/2EIeUlvHAiM" frameborder="0" allowfullscreen></iframe>

就我而言,我只是将其更改为width =“ 100%”,其余部分保持不变。这不是最优雅的解决方案(毕竟,在不同的设备中您会得到怪异的比率),但是视频本身不会变形,而只是帧变形。


这样反应灵敏吗?如果是,它将保持宽高比吗?
Csaba Toth 2015年

漂亮又简单。为我工作!谢谢!

也为我工作。保持建议的高度(在您的情况下为315),但将宽度更改为“ 100%”。响应式缩放并与引导程序列类一起很好地工作。
BAERUS

4

选项3

更新当前的iframe

$("iframe").wrap('<div class="embed-responsive embed-responsive-16by9"/>');
$("iframe").addClass('embed-responsive-item');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.