縦横比を決めて流動的な画像をクレートするにはどうすればよいですか? (16:9 としましょう)
で流動的にしましmax-width: 100%;
たが、アスペクト比を変更できません。
注: ほとんどの場合、画像の縦横比は異なります。
縦横比を決めて流動的な画像をクレートするにはどうすればよいですか? (16:9 としましょう)
で流動的にしましmax-width: 100%;
たが、アスペクト比を変更できません。
注: ほとんどの場合、画像の縦横比は異なります。
イメージを 2 つのコンテナーにラップできます。1 つのコンテナーheight:0
とpadding-top
、幅に比例して画像の高さに必要なパーセンテージを指定します。したがって、高さが幅の 50% の場合は、 と を使用padding-top:50%
します。これにより、ここでheight:0
説明したように、高さが幅に 50% 比例します。
.wrapper {padding-top:50%;height:0;position:relative;}
そのコンテナー内に、次のスタイルの別のコンテナーを配置します。
.inner{position:absolute;left:0;top:0;right:0;bottom:0;}
width:100%
画像を内側のコンテナに配置して渡すだけです。height:100%
フィドルを参照してください: http://jsfiddle.net/henrikandersson/PREUD/1/ (フィドルを更新)
別の投稿でこのコードを見つけました:
.43 img { width: auto; }
.widescreen img { width: 100%; }
.portrait img { height: 100%; }
var getAspect = function(){
var h = window.innerHeight;
var w = window.innerWidth;
var aspect = w / h;
var 43 = 4 / 3;
var cssClass = "";
if (aspect > 43) {
cssClass = "widescreen";
}
else if (aspect === 43) {
cssClass = "43";
}
else {
cssClass = "portrait";
}
$("body").addClass(cssClass); // Using jQuery here, but it can be done without it
};
var checkAspect = setInterval(getAspect, 2000);
おそらく、HTML に追加のマークアップが必要になるでしょうが、CSS の Clip プロパティを使用して、表示したい画像の表示部分を切り取ることができます。https://developer.mozilla.org/en/CSS/clip