質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.40%

  • HTML

    12182questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • CSS

    8040questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

ウィンドウ幅に対応した埋め込み動画のcssが分かりません

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 844

pythago

score 39

ウィンドウ幅に対応して動画サイズが変わるのですが、どうして以下のようなcssで可能になるかが理解できません。
どなたか教えていただけないでしょうか?

<p>
    <iframe>
</p>
p {
    padding: 56.25% 0 0 0;
    position: relarive;
    width: 100%;
}
iframe {
    position: absolute;
    top: 0;
    right: 0;
    width: 100% !important;
    height: 100% !important;
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

chiro.0516さんの紹介されている参考URLでほぼ説明しつくされている感はありますが、
一応補足。

まず、ウィンドウ幅に対応して動画サイズ(iframeのサイズ)が変わる仕組みですが、
大きく2つの柱があります。

1.親要素の横幅に対して一定の比率でサイズが変わる空白領域を作る

まず「1」を実装しているのが今回のコードで言えばこの部分です。

p {
    padding: 56.25% 0 0 0;
}


ショートハンドになっていますが要するに、padding-top: 56.25%;これがポイントです。
CSSにおいてpadding/marginの値を%で指定した場合、何を基準とするのか?
そこが分かっていれば「横幅に対して常に一定のサイズの領域を作る仕組み」が理解できるようになります。

padding/marginの値を%にした場合、基準となるのはその親要素の横幅です。

・自分自身の横幅ではなく、親要素の横幅を基準とする
・左右のmargin/paddingだけでなく上下のmargin/paddingでも、基準となるのは親要素の横幅である

CSSのこの仕様により、
親の横幅100%に対してpadding-topを56.25%とすることで、16:9の比率の空白領域を常に保つことが
できるようになります。(参考サイトでは16:9→9÷6=56.25となっていますが、正確には9÷16×100=56.25%ですね)

2. 1で作った空白領域内全体をiframeで覆う

次に、この一定比率を保ったまま拡大縮小する空白領域の上に、動画を埋め込むためのiframe要素を
position:absolute;で被せます。

iframe {
    position: absolute;
    top: 0;
    right: 0;
    width: 100% !important;
    height: 100% !important;
}


この時、iframe要素のwidthとheightを共に100%にすることで、
widthは親要素の幅いっぱいに、heightは親要素の高さいっぱいに拡がることになります。
iframe要素も%指定していますので、親のコンテナ要素のサイズが変わればそれに応じて
iframe要素のサイズも変わります。
そこに、Youtubeの動画が表示される、という仕組みです。

お分かりいただけましたでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/30 19:58

    はい!
    ほぼ理解することが出来ましたが、1つ質問させてください。
    padding-topを56.25%にすることで、pタグ内が常に16:9を保てるということでしょうか?

    キャンセル

  • 2016/05/30 20:00

    その通りです。
    ちなみにpadding-topではなく、padding-bottom: 56.25%; としても結果は同じです。
    (同じ仕組で動いているので)

    キャンセル

  • 2016/05/31 08:42

    ご丁寧にありがとうございます
    理解することが出来ました

    キャンセル

+1

こんにちは。

現状のソースだとpタグが意味をなしてないから理解できないんじゃないですか?
pタグのwidth変えても画面に対していっぱいいっぱいに表示されるだけじゃん的な。。。

本来ならpタグのwidthを80%にしたらwindowに対して80%で動画を表示されるべきですが
現状だと
pタグのpositionの値が間違って記載されています。

p {
        padding: 56.25% 0 0 0;
        position: relative;
        width: 100%;
    }


が正しい記述です。
そしてpaddingで与えている56.25%ってのは割と肝だと個人的には思います。

http://design-spice.com/2014/03/24/percentag/
個人的にはこっちのほうが丁寧なのでこの辺見てみると理解できるかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

http://www.webdesignleaves.com/wp/htmlcss/639/

ここの説明でいかがでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.40%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • HTML

    12182questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • CSS

    8040questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。