如果没有提到的图片或指向实时站点的链接,就很难提供准确的答案。
尽管如此,通过查看您的代码,您正在使元素居中,但您没有考虑任何可能应用于它或其父级的或margin
。padding
实际例子:
让我们假设以下示例应用您的代码并进行必要的更正:
假设以下标记:
<div id="pagecontent">
<div id="foobar">I'm at the very middle!</div>
</div>
使用以下 CSS:
#pagecontent {
margin: 10px;
padding: 10px;
height: 240px;
width: 360px;
border: 1px solid #D9D9D9;
position: relative;
}
#foobar {
position: absolute;
width: 200px;
height: 20px;
line-height: 20px;
border: 1px solid blue;
}
您的 jQuery 代码可以改进为:
var $inner = $('#foobar'),
$wrapper = $('#pagecontent');
$inner.css({
'top' : ($wrapper.outerHeight() / 2) - ($inner.outerHeight(true) / 2),
'left' : ($wrapper.outerWidth() / 2) - ($inner.outerWidth(true) / 2)
});
进一步说明:
要使用 jQuery 收集元素的宽度和高度,同时获取填充和边距声明所占用的空间,可以使用:
jQuery .outerWidth()函数:
描述:获取匹配元素集中第一个元素的当前计算宽度,包括填充和边框。
.outerWidth( [includeMargin] )
includeMargin一个布尔值,指示是否在计算中包括元素的边距。
jQuery .outerHeight()函数:
描述:获取匹配元素集中第一个元素的当前计算高度,包括填充、边框和可选的边距。如果在一组空元素上调用,则返回值的整数(不带“px”)表示形式或 null。
.outerHeight( [includeMargin] )
includeMargin一个布尔值,指示是否在计算中包括元素的边距。