Чуйний iframe за допомогою Bootstrap


100

Я використовую Bootstrap.

У мене є текст, який містить 2 або 3 вбудованих відео на основі кадрів.

Ці дані отримуються з бази даних.

Як зробити так, щоб ці рамки відповідали?

Приклад коду:

<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>

Це динамічні дані. Як я можу зробити його чуйним?


можливий дублікат Зробити iframe
respovable

1
Добре відзначити, яка версія Bootstrap. Я відповів на це двома варіантами.
Крістіна

Відповіді:


215

Варіант 1

За допомогою програми Bootstrap 3.2 ви можете загорнути кожну рамку кадрів у адаптивну вбудовувану обгортку на ваш вибір:

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

Якщо ви не хочете обертати свої 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

1
до Варіанту 1: URL-адреса для документів змінено на getbootstrap.com/docs/3.3/components/#responsive-embed
Олександр Шмідт

використовуйте одне співвідношення сторін і включіть це, щоб він працював - >> <meta charset = "utf-8"> <meta name = "viewport" content = "width = ширина пристрою, початковий масштаб = 1"> <посилання rel = "stylesheet" href = " maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css "> <script src = " maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/… > а в тезі iframe -> frameborder = "0" style = "overflow: приховано; overflow-x: приховано; переповнення-у: приховано; висота: 100%; ширина: 100%; позиція: абсолютна; вгорі: 0px; зліва: 0px; праворуч: 0px; низ: 0px; "висота =" 100% "ширина =" 100% "
кришна

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-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>

Це воно! Тепер ви можете використовувати чуйні відео на своєму сайті.


1
padding-bottom: 56.25%;зробіть якісь дивні речі
Emidomenge

9

Отже, youtube видає тег iframe наступним чином:

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

У моєму випадку я просто змінив його на width = "100%", а решту залишив як є. Це не найвишуканіше рішення (адже в різних пристроях ви отримаєте дивні співвідношення) Але саме відео не деформується, просто кадр.


Це так реагує? Якщо це так, чи збереже це співвідношення сторін?
Csaba Toth

Приємно і просто. Працювали для мене! Дякую!
Джо

Працює і для мене. Зберігаючи запропоновану висоту (у вашому випадку 315), але змініть ширину на "100%". Масштаби реагує добре і добре працює з класами стовпчиків завантаження.
BAERUS

4

Варіант 3

Щоб оновити поточний iframe

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

0

Працює протягом серпня 2020 року

використовуй це

<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

використовувати одне співвідношення сторін

<div class="embed-responsive embed-responsive-4by3">
  <iframe class="embed-responsive-item" src="…"></iframe>
</div>

в рамках параметрів використання рамки iframe

 <iframe class="embed-responsive-item" src="..."
  frameborder="0"
    style="
      overflow: hidden;
      overflow-x: hidden;
      overflow-y: hidden;
      height: 100%;
      width: 100%;
      position: absolute;
      top: 0px;
      left: 0px;
      right: 0px;
      bottom: 0px;
    "
    height="100%"
    width="100%"
  ></iframe>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.