グリッドタイプのフォーマット内で画像の中央を動的に整列させようとしています。各画像は、の最大高さと最大幅を使用してCDNから動的に読み込まれ.thumbnail img
ます。コンテナdivは固定の幅と高さです。
#storeItems .thumbnail {
border:1px solid #637678;
width:136px;
height:151px;
padding:1px;
position:relative;
margin:0 auto;
display:block;
overflow:hidden;
}
#storeItems .thumbnail img {
max-width:130px;
max-height:130px;
display:block;
position:relative;
}
私が作成したJavaScriptは、IE8 +、Chrome、Opera、Safari、Firefox内で画像を正しく配置します。ただし、IE8 +、Opera、Firefoxで問題が発生するのは、最初にページを読み込んだときに、ページを更新するまで整列しません。ページがキャッシュされると、配置が正常に保たれます。これは、キャッシュされたページがない最初のページのロード後にのみ発生するようです。
(function($) {
$("#storeItems .thumbnail").each(function(i){
var img = $(this).find('img');
var y = $(this).height(),
x = $(this).width();
/**
* WebKit browsers which incorrectly calculates margin
*/
if($.browser.webkit) {
$(this).css({
'display': 'table-cell',
'vertical-align': 'middle',
'text-align': 'center'
});
img.css({
'margin': 'auto auto'
});
}
else {
img.css({
'margin-top': ((y-img.height())/2)+'px',
'margin-left': ((x-img.width())/2)+'px'
});
}
});
})(jQuery);
ページの下部にJavaScriptを読み込んでいます。ヘッダーに読み込んでみました。$(document).ready();
ヘッダーと下部の両方でも使用しました。それを試した後、それはまったく整列しませんでした。足りないものはありますか?これらのブラウザでは、最初の実行時に計算が行われないようです。何かご意見は?