Отзывчивый iframe с использованием Bootstrap

Я использую Bootstrap.

У меня есть текст, содержащий 2 или 3 встроенных видео на основе iframes.

Эти данные извлекаются из базы данных.

Как я могу сделать эти iframes отзывчивыми?

Пример кода:

<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

Вариант 1

С помощью Bootstrap 3.2 вы можете обернуть каждый iframe в оболочку responsive-embed по вашему выбору:

http://getbootstrap.com/components/#responsive-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

Если вы не хотите обертывать свои фреймы, вы можете использовать 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

Пожалуйста, проверьте это, я надеюсь, что это поможет

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

Ответ 3

Лучшее решение, которое отлично подойдет для меня, - это тот, который я нашел в приведенной ниже ссылке: https://bootstrapmaster.com/implement-responsive-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>

Вот оно! Теперь вы можете использовать отзывчивые видео на своем сайте.

Ответ 4

Вариант 3

Чтобы обновить текущий iframe

$("iframe").wrap('<div class="embed-responsive embed-responsive-16by9"/>');
$("iframe").addClass('embed-responsive-item');

Ответ 5

Итак, youtube выдает тег iframe следующим образом:

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

В моем случае я просто изменил его на width = "100%" и оставил остальное как есть. Это не самое изящное решение (в конце концов, на разных устройствах вы получите странные коэффициенты). Но само видео не деформируется, просто кадр.