div要素をcssでアスペクト比固定にしたものを、height100%で画面全体に表示させたいのですが可能でしょうか?画像ならbodyとhtmlにheight100%を指定してやれば、後は画像自身にheight100%を指定してやることで画像のアスペクト比は保ったまま画面全体に表示されますが、それをdivだけで実現することって可能でしょうか?
positon:absolute; top:0;left:0;bottom:0;right:0;にしてbackground-size:containで表示すればいけるんじゃない?
回答ありがとうございます。すいません質問の文章内容が悪かったです。
例として具体的に書くと、縦4横2の比率の色のついたブロックを画面全体(ウィンドウの縦幅全体)に表示させたいのですが、可能でしょうか?画像などは一切つかいません。
html{height:100%}body{height:100%}
親要素{width:800px;height:100%;}
子要素{background-color:red;padding-top:100%;width:50%;}
これで一応4:2の色のついたブロックは完成しますが、これを画面全体に表示させたいのですが、これでは子要素にheight100%を使っている訳ではないので画面縦幅全体には表示されませんし、かといってpaddingではなくheightで子要素の高さを指定してしまうとアスペクト比は維持されませんし、他に良い方法はないでしょうか?
単純に4;2のアスペクト比の画像を作ってheight100%で配置すれば済む話なのですが、なるべくCSSのみで解決できれば気持ちがいいなと思いまして質問いたしました。
width: 0;padding-right: 50%;height: 100%;とかじゃだめかな
vmax使うとか、calc()使うとかすればいけるかもしれないけど、対象ブラウザやOSが限られるかもしれない
これ
vmaxについて調べました。widthやheightにvh.vwなどの単位を指定できるみたいですね!初めて知りました。
親要素{ width:100vh; height:100vh;}
子要素{ width:50%; height:100%; background-color:red;}
これで一応自分がやりたかったことができました!ただやはり古いブラウザーや4.4以下のAndroidでは対応できてないみたいですね。そこは割り切ろうと思います。
これか?
YouTubeのレスポンシブか
モダンブラウザであれば、cssだけでできる。レガシーブラウザ含めるなら画像使うかjs使うかどっちがいいかという話。
みんなの回答 4 件
positon:absolute; top:0;left:0;bottom:0;right:0;にしてbackground-size:containで表示すればいけるんじゃない?
vmax使うとか、calc()使うとかすればいけるかもしれないけど、対象ブラウザやOSが限られるかもしれない
これか?
CSSだけでアスペクト比を固定するテク
http://qiita.com/ryounagaoka/items/a98f59347ed758743b8dモダンブラウザであれば、cssだけでできる。
レガシーブラウザ含めるなら画像使うかjs使うかどっちがいいかという話。
関連するトピックス