Без упомянутой картинки или ссылки на живой сайт трудно дать точный ответ.
Тем не менее, просматривая свой код, вы центрируете элемент, но не рассматриваете какие-либо 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():
Описание. Получите текущую вычисленную высоту для первого элемента в наборе совпадающих элементов, включая отступы, границы и, возможно, поля. Возвращает целочисленное (без пикселей) представление значения или null, если вызывается для пустого набора элементов.
.outerHeight([includeMargin])
includeMargin Логическое значение, указывающее, следует ли включать в расчет поля элемента.
person
Zuul
schedule
15.07.2012