HTML
<div class="element">
<p>I want to center this element vertically and horizontally.</p>
</div>
CSS
.element
{
background: #eee;
border: 1px solid #ccc;
font-size: 24px;
margin: 10px;
padding: 20px;
position: absolute;
}
jQuery
jQuery(document).ready(function($) {
var $element = $('.element');
center();
$(window).on('resize', function() {
center();
});
function center() {
var width = $element.outerWidth(true);
var height = $element.outerHeight(true);
console.log(width);
console.log(height);
$element
.stop(true)
.animate({
top: Math.max(0, ($(window).height() - height) / 2),
left: Math.max(0, ($(window).width() - width) / 2)
});
}
});
問題
ウィンドウのサイズを変更すると、outerWidth() と outerHeight() が間違っているため、要素が中央に配置されません。
リフレッシュ後、問題は解消されます。
Firefox でのテスト結果
デフォルト: 要素サイズ - 670x134 (良い)
768x1024: 要素サイズ - 198x254 (間違った) - 670x134 (更新後は良い)
360x640: 要素サイズ - 198x254 (不適切) - 360x182 (更新後は適切)
質問
この問題が発生する理由と修正方法はありますか?
ノート
要素の幅や高さを固定したくありません。