0

div内の画像の正しい縦横比を維持し、中央にも配置して、画像を中央に配置しようとしています。次のhtmlコードがあります。

<div class="product-large" style="position: relative; overflow: hidden;">
  <img src="/images/store_logos/c48edfde4dfb95efb42c5bb474fc249a2bc84253.jpeg" alt="" class="js-fix" style="margin-left: 0px; margin-top: 0px;">
  <img src="/images/store_logos/c48edfde4dfb95efb42c5bb474fc249a2bc84253.jpeg" class="zoomImg" style="position: absolute; top: 0px; left: -3.3157894736842106px; opacity: 0; width: 500px; height: 760px; border: none; max-width: none;">
</div>

次の JavaScript コードを使用して、画像を中央に配置します。

$(".product-large img").each(function () {
        //get height and width (unitless) and divide by 2
        var hWide = ($(this).width()) / 2; //half the image's width
        var hTall = ($(this).height()) / 2; //half the image's height, etc.

        // attach negative and pixel for CSS rule
        hWide = '-' + hWide + 'px';
        hTall = '-' + hTall + 'px';

        $(this).addClass("js-fix").css({
            "margin-left": hWide,
                "margin-top": hTall
        });
    });
#main.product-detail .product-banner .product-large img
{
    max-width:437px;
    max-height:437px;
    width:auto;
    height:auto;
    position:absolute;
    top:50%;
    left:50%;
}

#main.product-detail .product-banner .product-large {
    background-color: #F3EFEA;
    height: 437px;
    width: 437px;
}

最初の読み込みでは問題なく動作しますが、2 回目の読み込みでは画像の位置がずれたり壊れたりします (つまり、正しく中央に配置されていません)。

実際の例については、以下のリンクを確認してから、ページを数回更新してください。2 回目または 3 回目で画像が中央に配置されていないことに気付くでしょう。理由はありますか?

4

1 に答える 1

1

これが機能しない場合は、テーブル セル アプローチを使用して 100% CSS 整列を使用することをお勧めします。より少ないJavaScriptは常に優れています:)これを行う方法のjsfiddleは次のとおりです

http://jsfiddle.net/fMJDj/1

そしてフィドルのコード:

<div>
  <img src="http://explodingdog.com/drawing/awesome.jpg" />
</div>

div {
  border: 1px solid red;
  display:table-cell;
  vertical-align: middle;
  text-align: center;
  height: 800px;
  width: 800px;
}
img {
  max-width:437px;
  max-height:437px;
}
于 2013-05-03T23:50:29.580 に答える