Отзывчивый 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%" и оставил остальное как есть. Это не самое изящное решение (в конце концов, на разных устройствах вы получите странные коэффициенты). Но само видео не деформируется, просто кадр.