大きなウィンドウ サイズの外側のラッパーを使用して水平方向の画像をスケーリングし、overflow:hidden を負のマージン ( (wrapperWidth - imageWidth)/2 ) で使用し、小さなウィンドウの場合は画像の最大幅を 400% にするレスポンシブな写真とテキストのスライダーを作成しています。サイズ。これにより、中央がトリミングされた縦長の画像を表示できます。
<div class="slider">
<ul class="slides">
<li><a href=""><img alt="" src="image.jpg"/></a>
<div class="caption">
<h2><a href="">Large Caption</a></h2>
<p><a href="">Small Caption</a></p>
</div>
</li>
etc.etc.
</div>
.slider .slides li{
width: 100%;
overflow: hidden;
}
.slider .slides img{
max-width: 400%;
}
etc.
$(window).resize(function(){
var container = $('.slider');
imageWidth =container.find('.slides img').width();
wrapperWidth =container.find('.slides').width();
margin = (wrapperWidth - imageWidth) / 2;
container.find('.slides img').css('margin-left', margin)
});
質問
セットアップはページの読み込みではうまく機能しますが、ブラウザー ウィンドウのサイズを変更すると、Jquery はラッパーの幅を適切に計算しながら、ランダムなタイミングで画像の幅を失う (0 を返す) ようです。これにより、誤ったマージン値が計算され、イメージが中央に配置されません。
なぜこれが起こっているのでしょうか?