純粋な css に完全に動的なソリューションがあるとは思いません (ただし、間違っていることを証明したいと思います!)
ここに簡単な jQuery ソリューションを書きました: http://jsfiddle.net/d2gSK/2/
画像サイズ、ウィンドウ サイズ、ガターの幅で遊ぶことができ、高さは両方の画像で同じままにする必要があります。幅はプロポーションに設定されています。
JavaScript は次のようになります。
// put it in a function so you can easily reuse it elsewhere
function fitImages(img1, img2, gutter) {
// turn your images into jQuery objects (so we can use .width() )
var $img1 = $(img1);
var $img2 = $(img2);
// calculate the aspect ratio to maintain proportions
var ratio1 = $img1.width() / $img1.height();
var ratio2 = $img2.width() / $img2.height();
// get the target width of the two images combined, taking the gutter into account
var targetWidth = $img1.parent().width() - gutter;
// calculate the new width of each image
var width1 = targetWidth / (ratio1+ratio2) * ratio1;
var width2 = targetWidth / (ratio1+ratio2) * ratio2;
// set width, and height in proportion
$img1.width(width1);
$img1.height(width1 / ratio1);
$img2.width(width2);
$img2.height(width2 / ratio2);
// add the gutter
$img1.css('paddingRight', gutter + 'px');
}
//when the DOM is ready
$(document).ready(function() {
// cache the image container
var $wrapper = $('.portrait-wrapper');
// set the image sizes on load
fitImages($wrapper.children().get(0), $wrapper.children().get(1), 20);
// recalculate the image sizes on resize of the window
$(window).resize(function() {
fitImages($wrapper.children().get(0), $wrapper.children().get(1), 20);
});
});
説明をコード内に入れました。さらに説明が必要な場合は、お気軽にお尋ねください。
私はあなたの画像の周りにラッパーを置き、画像に adisplay: block
と aを与えたことに注意してくださいfloat:left
。これは、この作業を行うために必要です!