固定された正しい高さはありません。css で固定の高さを設定すると、レスポンシブ レイアウトで画像が正しい縦横比でサイズ変更されません。
主な問題は、css が width- および height- 属性ではなく src-attribute によって設定された画像から自動の高さと縦横比を計算することです。したがって、幅と高さを持つ実際の画像があれば、すべて正常に機能します。ただし、空白がある場合 (これは引き伸ばされた 1x1 画像にすぎません)、html によって設定された幅と高さは css 計算に影響しないため、アスペクト比は正しく計算されません (ただし、css なしでブラウザーによってどのように表示されるか)。 -計算)。
私が考えたことの1つは、「実際の画像」に対してのみ「高さ:自動」を設定し、ウィンドウのサイズ変更ごとにjqueryで「空白の画像」の高さを計算することでした:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
<style type="text/css">
img {
max-width: 100%;
}
.lazy-loaded {
height: auto;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script language="JavaScript">
$(document).ready(function(){
resizeBlankImages();
});
$(window).resize(function(){
resizeBlankImages();
});
function resizeBlankImages() {
$(".lazy-blank").each(function () {
var originalWidth = $(this).attr('width');
var originalHeight = $(this).attr('height');
var ratio = originalWidth/originalHeight;
var width = $(this).width();
var height = width/ratio;
$(this).height(height);
});
}
</script>
</head>
<body>
<img data-original="image.jpg" src="image.jpg" class="lazy lazy-loaded" width="500" height="300">
<br/>
<img data-original="image.jpg" src="blank.gif" class="lazy lazy-blank" width="500" height="300">
</body>
</html>
それは機能しますが、多くの画像を含むページでは非常に扱いにくくなる可能性があります. そのための別のアイデアはありますか?