2017-02-27 7 views
2

は私が divを使用せずにiframeを反応的にするにはどうすればよいですか?

<div class="intrinsic-container"> 
    <iframe width="560" height="315" src="https://www.youtube.com/embed/I4YoBuJCbfo" frameborder="0" allowfullscreen></iframe> 
</div> 

<div>...</div>を使用せずに、私の記事(で直接 <iframe>...</iframe>を埋め込むことが可能であり、このポスト例えば、iframeの周りのクラスにコンテナを追加することにより、応答のiframeを作る( Making an iframe responsive)から学びました)?そして私はこれらのソリューションを試しましたが、それらのすべては機能しません。

enter image description here

PS:私はワードプレスに2列のレイアウトを使用しています。ビデオの比率は16:9(YouTubeから)、4:3(Tencentから)などとすることができます。ここには一時的なdemoがあります。

答えて

5

余分なラッパー要素なしで実行可能なビューポート単位を使用できる場合。

全ページ幅:

iframe { 
 
    width: 100vw; 
 
    height: 56.25vw; /*16:9*/ 
 
}
<iframe width="560" height="315" src="https://www.youtube.com/embed/I4YoBuJCbfo" frameborder="0" allowfullscreen></iframe>

ハーフページ幅:

iframe { 
 
    width: 50vw; 
 
    height: 28.125vw; /*16:9*/ 
 
}
<iframe width="560" height="315" src="https://www.youtube.com/embed/I4YoBuJCbfo" frameborder="0" allowfullscreen></iframe>

+0

私はワードプレスで2つの列のレイアウトを使用しています。だから、 'width'を(100vw - サイドバーの幅)に設定する必要がありますか?しかし、サイドバーは、デスクトップとモバイルプラットフォーム上で異なって表示されます。ここには[デモ](http://sparkandshine.net/en/a-three-minutes-short-film-dejeuner-du-matin-breakfast/)があります。 – SparkAndShine

+0

もう1つの問題:ビデオの比率は必ずしも16:9とは限りません。他のプラットフォームのビデオの中には、デフォルトで 'width = "640" height = "498"(比率は4:3)です。 – SparkAndShine

+0

@sparkandshine #primaryと#secondaryの両方をvwに変換するかどうかは、iframeのサイズに合わせて計算するか、より簡単な場合はdivを使用してラップします。 16:9対4:3の比率では、クラスでラッパーを使用するような音が最も簡単です。 – Stickers

-1

iframeに応答するためにブートストラップクラスを使用します。

<div class="embed-responsive embed-responsive-16by9"> 
    <iframe class="embed-responsive-item" allowfullscreen 
      src="//www.youtube.com/embed/zpOULjyy-n8?rel=0" > 
    </iframe> 
</div> 
+2

のようなあるあります – Mattonit

1

ここで重要なのは、高さと幅の比あなたです守りたい私はこれを行うには、javascriptの代わりにjQueryを使用する自由を取った。ボタンをクリックするとコードがトリガされます。 iframeの幅と高さの比率を計算し、必要に応じて調整します(この場合、コンテナの幅を埋めると仮定しました)。

複数のページがある場合は、すべての動画をループして、ウィンドウのサイズ変更とページの読み込みでコードを実行します。ここで

JSFiddle

はそれが役に立てば幸い:)

HTML

<iframe id="iframe" width="640" height="360" src="https://www.youtube.com/embed/4SDVkdcO8ts" frameborder="0" allowfullscreen></iframe> 
<button id="button" style="float: left">Click me!</button> 

jQueryのこのためブートストラップを使用して

$(document).ready(function(){ 
    $("button").click(function(){ 
    var ratio = $("#iframe").height()/$("#iframe").width(); 
    $("#iframe").width("100%"); 
    var newWidth = $("#iframe").width(); 
    $("#iframe").width(newWidth); 
    $("#iframe").height(newWidth*ratio); 
    $("button").text("resize the window and click me again!"); 
    }); 
}); 
関連する問題