При создании макетов веб-страниц, вы наверняка сталкивались с ситуацией, когда вам необходимо отцентрировать DIV
, используя CSS, по горизонтали и вертикали. Существует несколько путей решения это проблемы, и в этой статье мы покажем вам реализацию центрирования DIV
с помощью CSS и jQuery.
Горизонтальное центрирование на CSS
По классике жанра, используем свойство margin
:
1 2 3 4 5 |
.className{ margin:0 auto; width:200px; height:200px; } |
Для того, чтобы отцентрировать DIV только по горизонтали, необходимо указать ширину (свойство width
) этого блока и значения auto
для левого и правого margin
.
Этот метод работает на блочных элементах (div
, параграфы, h1
, и т.д.). Чтобы применить этот метод к линейным элементам (например, гиперссылки и изображения), необходимо установить дополнительное правило — display:block
.
Горизонтальное и вертикальное центрирование на CSS
Центрирование DIV
по горизонтали и вертикали на CSS выглядит немного сложнее. Одно условие — вам надо знать заранее размеры DIV
.
1 2 3 4 5 6 7 8 |
.className{ width:300px; height:200px; position:absolute; left:50%; top:50%; margin:-100px 0 0 -150px; } |
При абсолютном позиционировании элемента, мы можем отделить его от окружающих элементов и определить позицию по отношению к окну браузера. Устанавливем позиционирование Div
на 50% от левой и верхней части окна, и в результате, верхний левый угол блока будет точно в центре страницы.
Единственное, что осталось сделать, это сдвинуть блок вверх и влево на половину высоты и ширины блока, используя отрицательные значения margin
.
Горизонтальное и вертикальное центрирование на jQuery
Как упоминалось ранее — метод центрирования на CSS работает только для блоков с фиксированными размерами. Здесь, в игру вступает jQuery:
1 2 3 4 5 6 7 8 9 10 11 12 |
$(window).resize(function(){ $('.className').css({ position:'absolute', left: ($(document).width() - $('.className').outerWidth())/2, top: ($(document).height() - $('.className').outerHeight())/2 }); }); // To initially run the function: $(window).resize(); |
Функциональность вставлена в $(window).resize()
, которая выполняется каждый раз при изменении размеров окна. Мы используем outerWidth()
и outerHeight()
, потому что в отличие от типичных width()
и height()
, они добавляют значение padding
и ширину бордюра (border
) к возвращаемому размеру. И в конце, вызываем событие изменение размеров окна, чтобы установить DIV
точно по центру на странице загрузки.
Оценка и возможное применение
Преимущество использования этого метода заключается в том, что вам не нужно знать размеров DIV
. Основной недостаток в том, что данный метод не будет работать, при отключенном JavaScript. Однако, этот метод будет просто идеальным для различных пользовательских интерфейсов (таких, как Facebook).
js — это очень плохо((
по возможности используйте css.
Посмотрите в сторону display:inline-block
В статье недостатки JS описаны.
Хотелось бы увидеть пример с использованием display:inline-block
Вот использование inline-block:
Спасибо за ссылку. Плохо что команда Лебедева не часто выкладывает подобные статьи.
если у дива выставить высоту 100%, то он никакими способами не центрируется.