Iframe đáp ứng bằng Bootstrap


100

Tôi đang sử dụng Bootstrap.

Tôi có một văn bản chứa 2 hoặc 3 video nhúng dựa trên iframe.

Dữ liệu này được lấy từ cơ sở dữ liệu.

Làm cách nào để làm cho các iframe này phản hồi?

Mã ví dụ:

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

Đây là một dữ liệu động. Làm thế nào tôi có thể làm cho nó phản hồi?


có thể trùng lặp của Làm một iframe đáp ứng
mpgn

1
Bạn nên lưu ý phiên bản Bootstrap nào. Tôi đã trả lời điều này với hai lựa chọn.
Christina

Câu trả lời:


215

lựa chọn 1

Với Bootstrap 3.2, bạn có thể bọc từng iframe trong trình bao bọc nhúng đáp ứng mà bạn chọn:

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>

Lựa chọn 2

Nếu không muốn bọc iframe của mình, bạn có thể sử dụng FluidVids https://github.com/toddmotto/fluidvids . Xem demo tại đây: 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
không thể giảm chiều cao của iframe. Tôi đã thay đổi từ 100%đến 80%lớp .embed-responsive iframe. Nhưng đang cho không gian trống. sau video. Làm thế nào để tránh không gian này.
SatyaTNV

CUỐI CÙNG điều này hoạt động hoàn hảo! Có thể rất hay khi bao gồm sự bắt buộc <p>Your browser does not appear to support iframes</p>giữa các iframethẻ, nhưng tôi đang tự hỏi liệu điều đó có liên quan những ngày này không ... cảm ơn một lần nữa, nhiều giải pháp (hacky) đã gần kề, nhưng điều này là hoàn hảo!
svenevs

1
để Lựa chọn 1: url để các tài liệu thay đổi để getbootstrap.com/docs/3.3/components/#responsive-embed
Alexander Schmidt

24

Làm ơn, hãy kiểm tra cái này, tôi hy vọng nó sẽ giúp

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

Cảm ơn bạn! Ugh cuối cùng một cái gì đó đơn giản mà thực sự hoạt động.
Fatimaezzahra Rarhibou 23/09/18

13

Giải pháp tốt nhất phù hợp với tôi là giải pháp tôi tìm thấy trong liên kết bên dưới: https://bootstrapmaster.com/implement-responsive-youtube-vimeo-embed-iframe-twitter-bootstrap-3/

Bạn phải: Sao chép mã này vào tệp CSS chính của bạn,

.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%;
}

và sau đó đưa video đã nhúng của bạn vào

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

Đó là nó! Bây giờ bạn có thể sử dụng video đáp ứng trên trang web của mình.


1
padding-bottom: 56.25%;làm cho một số công cụ kỳ lạ
Emidomenge

9

Vì vậy, youtube đưa ra thẻ iframe như sau:

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

Trong trường hợp của tôi, tôi chỉ thay đổi nó thành width = "100%" và giữ nguyên phần còn lại. Đó không phải là giải pháp thanh lịch nhất (sau tất cả, ở các thiết bị khác nhau, bạn sẽ nhận được tỷ lệ kỳ lạ) Nhưng bản thân video không bị biến dạng, chỉ là khung hình.


Nó có phản hồi theo cách đó không? Nếu có, nó sẽ giữ nguyên tỷ lệ khung hình?
Csaba Toth

Đẹp và đơn giản. Đã làm cho tôi! Cảm ơn!
Joe

Làm việc cho tôi quá. Giữ chiều cao được đề xuất (trong trường hợp của bạn là 315), nhưng thay đổi chiều rộng thành "100%". Cân đối đáp ứng và hoạt động tốt với các lớp cột bootstrap.
BAERUS

4

Lựa chọn 3

Để cập nhật iframe hiện tại

$("iframe").wrap('<div class="embed-responsive embed-responsive-16by9"/>');
$("iframe").addClass('embed-responsive-item');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.