わかりましたが、代わりに画像を背景として使用しました<img>
。それが問題ではないことを願っています。
background-size:contain;
画像の元の比率/縦横比を維持しながら、背景画像がスケーリングされます。FF4+、IE9+、Chrome1+ (ベンダープレフィックス付き)、Opera10+、Safari 3+ (ソース) でサポートされています。
最初の要件の主な問題:「containig div/table のサイズはクライアント領域のサイズに制限されています」はheight:100%;
、親コンテナーにも高さが設定されていない限り設定できないことです。
あなたのページには、動的な高さのヘッダーとフッターがあることがわかります。そのため、コンテナーの高さを調整するには jQuery が必要です。しかし、最初に CSS だけでそれを行う方法を見てみましょう。次に、ヘッダーとフッターを追加します。
デモ(ウィンドウのサイズを変更してみてください)
HTML:
<html>
<body>
<div id="body">
<div>
<div class="left"></div>
</div>
<div>
<div class="right"></div>
</div>
</div>
</body>
</html>
CSS:
html, body, #body {
width:100%;
height:100%;
}
#body, #body > div {
overflow:hidden;
}
#body > div {
box-sizing:border-box;
width:50%;
height:100%;
float:left;
padding:10px; /* or whatever you need */
}
#body > div > div {
margin:0 auto;
height:100%;
width:100%;
background-repeat:no-repeat;
background-position:top center;
-webkit-background-size:contain; /* Chrome1+, Safari 3+ */
background-size:contain; /* FF4+, IE9+, Chrome3+, Opera10+, Safari 3+ */
}
#body > div > div.left {
background-image:url(/* your left image url */);
max-width:417px; /* the real image width */
max-height:512px;; /* the real image height */
}
#body > div > div.right {
background-image:url(/* your right image url */);
max-width:417px; /* the real image width */
max-height:512px;; /* the real image height */
}
ヘッダーとフッターを追加しましょう。#bodyから削除height:100%;
し、ウィンドウの高さ - ヘッダーの高さ - フッターの高さの結果としてその高さを計算する必要があります。
デモ(ウィンドウのサイズを変更)
HTML:
<html>
<body>
<header>I'm a header</header>
<div id="body">
<div>
<div class="left"></div>
</div>
<div>
<div class="right"></div>
</div>
</div>
<footer>I'm a footer</footer>
</body>
</html>
CSS:
html, body {
width:100%;
height:100%;
}
header, footer {
background:grey;
}
#body {
height:400px; /* fallback no javascript */
}
#body, #body > div {
overflow:hidden;
}
#body > div {
box-sizing:border-box;
width:50%;
height:100%;
float:left;
padding:10px; /* or whatever you need */
}
#body > div > div {
margin:0 auto;
height:100%;
width:100%;
background-repeat:no-repeat;
background-position:top center;
-webkit-background-size:contain; /* Chrome1+, Safari 3+ */
background-size:contain; /* FF4+, IE9+, Chrome3+, Opera10+, Safari 3+ */
}
#body > div > div.left {
background-image:url(/* your left image url */);
max-width:417px; /* the real image width */
max-height:512px;; /* the real image height */
}
#body > div > div.right {
background-image:url(/* your right image url */);
max-width:417px; /* the real image width */
max-height:512px;; /* the real image height */
}
jQuery:
function calcHeight(){
var docHeight = $(document).height();
var headHeight = $('header').outerHeight();
var footHeight = $('footer').outerHeight();
var bodyHeight = docHeight - ( headHeight + footHeight);
$('#body').height(bodyHeight);
}
calcHeight(); /* called first time on page load */
$(window).on('resize',calcHeight());/* do the math again when window's resized */
それはかなり簡単だと思います。わかりやすくするためにこのように書きましたが、もちろんもっと圧縮することもできます。
outerHeight
フッターとヘッダーに可能な余白を含めるために使用しました。
jQuery ライブラリを含めたくない場合は、同じものを取得する純粋な JavaScript の方法が必ずあります。