Мне нужно поместить div
(с position:absolute;
) элемент в центре моего окна. Но у меня проблемы с этим, потому что ширина неизвестна .
Я попробовал это. Но это должно быть отрегулировано, поскольку ширина отзывчива.
.center {
left: 50%;
bottom:5px;
}
Любые идеи?
Ответы:
источник
position: fixed
но что, если высота не известна для наложения, должны быть реализованы полосы прокрутки для наложения<html>
. Но<html>
элемент не имеетheight
указанного, поэтому он принимает высоту всего содержимого в документе, что является ничем, потому что единственный контент абсолютно позиционирован (вынут из потока контента). Добавлениеheight: 100%
к<html>
элементу имеет значение для этого.Это работает для меня:
источник
width
должно быть установлено определенное значение, чтобы это работало.auto
и100%
не будет центрировать элемент.display: block;
является обязательным.position: absolute;
НЕ обязательно. Все ценности будут работать. Родительский элементposition
должен быть установлен в нечто иное, чемstatic
. Установкаleft
иright
до0
не нужна.margin-left: auto; margin-right: auto;
сделаю работу.Отзывчивое решение
Вот хорошее решение для адаптивного дизайна или неизвестных размеров в целом, если вам не нужна поддержка IE8 и ниже.
Показать фрагмент кода
Вот JS Fiddle
Подсказка в том, что
left: 50%
относительно родителя в то время какtranslate
преобразование относительно ширины / высоты элементов.Таким образом, вы получите идеально центрированный элемент с гибкой шириной как дочернего, так и родительского элемента. Бонус: это работает, даже если ребенок больше, чем родитель.
Вы также можете центрировать его по вертикали с помощью этого (и опять же, ширина и высота родителя и потомка могут быть полностью гибкими (и / или неизвестными)):
Имейте в виду, что вам также может понадобиться
transform
префикс поставщика. Например-webkit-transform: translate(-50%,-50%);
источник
webkit-
префиксом, как я и предлагал.transform: translate
кажетсяposition: fixed
непригодным для детей. Принятый ответ работает лучше в этом случае.Действительно хороший пост ... Просто хотел добавить, если кто-то хочет сделать это с одним тегом div, тогда вот выход:
Принимая
width
как900px
.В этом случае нужно знать
width
заранее.источник
"because the width is unknown"
... это не отвечает на вопросАбсолют Центр
HTML:
CSS:
Демо: http://jsbin.com/rexuk/2/
Протестировано в Google Chrome, Firefox и IE8
Надеюсь это поможет :)
источник
эта работа для вертикальной и горизонтальной
и если вы хотите сделать элемент центром родителя, установите положение родителя относительно
редактировать:
для вертикального центра выровняйте заданную высоту по вашему элементу. благодаря @Raul
если вы хотите сделать элемент центром родителя, установите положение родителя относительно
источник
В поисках решения я получил ответы выше и мог сосредоточить контент на ответе Матиаса Вейлера, но с помощью выравнивания текста.
Работал с Chrome и Firefox.
источник
Если вам нужно центрировать по горизонтали и вертикали тоже:
источник
** ОТВЕТСТВЕННОЕ РЕШЕНИЕ **
Предполагая, что элемент в div, это еще один div ...
это решение отлично работает
контейнер может быть любого размера (должно быть положение относительно)
Элемент ( div ) также может быть любого размера (должен быть меньше контейнера )
Результат будет выглядеть так. Запустите фрагмент кода
Я нашел это очень полезным
источник
Это смесь других ответов, которые работали для нас:
источник
Я понимаю, что на этот вопрос уже есть несколько ответов, но я никогда не находил решение, которое бы работало почти во всех классах, которое также имеет смысл и является элегантным, поэтому вот мое решение после настройки кучки:
То, что он делает, говорит, дайте мне a
top: 50%
и aleft: 50%
, затем преобразуйте (создайте пространство) на обеих осях X / Y в-50%
значение, в некотором смысле «создайте зеркальное пространство».Таким образом, это создает одинаковое пространство во всех 4 точках элемента div, который всегда является прямоугольником (имеет 4 стороны).
Это будет:
источник
translate(-50%,-50%);
?Работает на любой случайной неизвестной ширине элемента с абсолютным позиционированием, который вы хотите иметь в центре вашего элемента контейнера.
демонстрация
источник
Flex можно использовать для центрирования абсолютного позиционирования div.
Показать фрагмент кода
источник
display: -webkit-flex;
?Насколько я знаю, это невозможно достичь при неизвестной ширине.
Вы можете - если это работает в вашем сценарии - абсолютно позиционировать невидимый элемент со 100% шириной и высотой, и поместить элемент по центру, используя margin: auto и, возможно, выровнять по вертикали. В противном случае вам понадобится Javascript для этого.
источник
Я хотел бы добавить к ответу @ bobince:
Улучшено: /// теперь горизонтальная полоса прокрутки не отображается с большими элементами в центрированном элементе div.
источник
Вот полезный плагин JQuery для этого. Нашел здесь . Я не думаю, что это возможно чисто с помощью CSS
источник
sass / compass версия Responsive Solution выше:
источник
transform: translate(-50%, -50%)
делает текст и весь другой контент размытым на OS X, используя браузеры webkit. keithclark.co.uk/articles/gpu-text-rendering-in-webkit-webkit-font-smoothing: antialiased;
что я почерпнул из статьи, которую вы опубликовали.Мой предпочтительный метод центрирования:
JSFiddle здесь
источник
Это сработало для меня:
источник
Я знаю, что уже предоставил ответ, и мой предыдущий ответ, наряду с другими, отлично работает. Но я использовал это в прошлом, и это работает лучше в определенных браузерах и в определенных ситуациях. Поэтому я подумал, что я тоже дам этот ответ. Я не «редактировал» свой предыдущий ответ и не добавлял его, потому что чувствую, что это совершенно отдельный ответ, и два, которые я предоставил, не связаны между собой.
HTML:
CSS:
источник
источник
HTML
CSS
http://jsfiddle.net/f51rptfy/
источник
Это решение работает, если элемент имеет
width
иheight
источник
Решение этого вопроса не работает для моего случая. Я делаю подпись для некоторых изображений, и я решил использовать это
источник
HTML:
CSS:
Это и другие примеры здесь
источник
Это трюк, который я понял для того, чтобы заставить DIV плавать точно в центре страницы. Действительно некрасиво конечно, но работает во всех
Точки и тире
Очиститель
Вау, что пять лет пролетели незаметно, не так ли?
источник
источник
Вы можете поместить изображение в элемент div и добавить идентификатор элемента div, чтобы CSS для этого элемента div имел
text-align:center
HTML:
CSS:
источник
источник
Простой подход, который работал для меня, чтобы горизонтально центрировать блок неизвестной ширины:
Свойство text-align можно добавить в набор правил #block, чтобы выровнять его содержимое независимо от выравнивания блока.
Это работало на последних версиях Firefox, Chrome, IE, Edge и Safari.
источник