Выравнивание по центру (position:absolute) если изначально ширина не известна.
Здравствуйте!
Столкнулся с такой фигнёй: есть div со свойством position:absolute Как можно выровнять его по центру окна браузера? Знаю, что можно сделать отступ left:50% а потом margin-left:-ширина/2, но что делать, если изначально ширина блока не известна (тобишь она резиновая). Может с помощью JS как-то можно это реализовать? |
Выставить display:inline-block блоку и text-align:center родителю
|
Цитата:
Цитата:
|
ой, ошибся! :)
div absolute |
Цитата:
|
Цитата:
Делайте через js. style.left = (parent.offsetWidth - this.offsetWidth ) / 2 + 'px' |
var width = $('#pos').offsetWidth;
возвращает undefined. |
$('#pos')[0].offsetWidth или через jquery-метод $('#pos').width()
|
$('#pos').width(); возвращает null,
а $('#pos')[0].offsetWidth вообще ничего не возвращает. фигня какая-то |
<div id="pos">Бла бла бла</div> <script src="//code.jquery.com/jquery-latest.js"></script> <script> alert( $('#pos').width() ); alert( $('#pos')[0].offsetWidth ); </script> |
Да работает!
Только если поместить скрипт до элемента, то null, а если после то всё как надо. Спасибо! P.S. $('#pos')[0].offsetWidth точнее, чем .width() |
Цитата:
|
Вот решение, если что:
#pos { display:absolute: left:50%; } $('#pos').css('margin-left', -$('#pos')[0].offsetWidth/2); |
А обязательно блоку ставить position:absolute ?
|
Из контекста понял что блок резиновый.
Можно делать так.присвоить ширину блоку в процентах если ширина не указана и сделать так. left:50%,margin-left:-ширина%/2, |
Часовой пояс GMT +3, время: 21:49. |