Трюки с центрированием CSS [закрыто]
-
02-07-2019 - |
Вопрос
Мое любимое уравнение для центрирования элемента xhtml с использованием только CSS выглядит следующим образом:
display: block;
position: absolute;
width: _insert width here_;
left: 50%;
margin-left: _insert width divided by two & multiplied by negative one here_
В браузерах, которые его поддерживают, также есть более простой метод Margin:auto.Есть ли у кого-нибудь еще хитрые способы заставить контент отображаться по центру контейнера?(бонусные баллы за вертикальное центрирование)
редактировать - ой, забыл «отрицательную» часть слева на полях.зафиксированный.
Решение
Придерживайтесь маржи:0 авто;для горизонтального выравнивания;Если вам также необходимо вертикальное выравнивание, используйте положение:абсолютный;вершина:50%;маржа-верх:-(ширина/2) пикселей;Однако имейте в виду: если ширина вашего контейнера превышает ширину экрана, его часть упадет за пределы экрана с левой стороны, используя Position:абсолютный метод.
Другие советы
div #centered{
margin: 0 auto;
}
по моему опыту кажется самым надежным.
Ну, я должен сказать, что это кажется огромным излишним убийством.Я склонен устанавливать контейнер в text-align:center;
для старых браузеров, margin:auto;
для современных браузеров и оставьте так.Затем сбросьте выравнивание текста в элементе (если он содержит текст).
Конечно, некоторые вещи нужно настроить как блок, а ширину нужно настроить...Но что, черт возьми, вы пытаетесь создать, что требует что много хакерства?
<div style="text-align:center">
<div style="width:30px; margin:auto; text-align:left">
<!-- this div is sitting in the middle of the other -->
</div>
</div>
Margin:auto работает во всех браузерах, если вы убедитесь, что IE находится в стандартном режиме.
Он более придирчив, чем другие, и требует, чтобы ваш тип документа был самым первым в документе, что означает отсутствие пробелов (пробелов, табуляции или перевода строки) перед ним.
Если вы это сделаете, маржа:auto — это то, что вам нужно!:)
просто обратите внимание, что поля:auto;Метод работает только в том случае, если браузер может вычислить ширину центрируемого элемента и ширину родительского контейнера.во многих случаях установка width:auto;работает, но в некоторых нет.
Это удобная закладка для трюков CSS.
http://css-discuss.incutio.com/
Содержит много из центрирование трюки тоже.
Абсолютное позиционирование с 50% подходом имеет серьезный побочный эффект: если окно браузера уже, то элемент некоторая часть контента будет отображаться за левой частью браузера - без возможности прокрутки до него.
Придерживайтесь автоматической маржи — она гораздо надежнее.
Если вы работаете в стандартном режиме (как и должно быть), то они поддерживаются во всех браузерах, которые могут вас заинтересовать.
Вы можете использовать хак с выравниванием текста, если вам действительно нужна поддержка Internet Explorer 5.5 и более ранних версий.
body {
text-align: center;
}
#container {
width: 770px;
margin: 0 auto;
text-align: left;
}
Это прекрасно работает во всех обычных браузерах.Как уже упоминалось margin: 0 auto;
не будет работать во всех устаревших версиях IE.
Попробуй это;не знаю, работает ли это в IE, но в Fx работает нормально.Он центрирует блок DIV на странице, используя только CSS (без JavaScript), без автоматического поля, а текст внутри блока DIV по-прежнему выравнивается по левому краю.Я просто пытаюсь выяснить, может ли вертикальное центрирование работать таким же образом, но пока безуспешно.
<html>
<head>
<title>Center Example</title>
<style>
.center {
clear:both;
width:100%;
overflow:hidden;
position:relative;
}
.center .helper {
float:left;
position:relative;
left:50%;
}
.center .helper .content {
float:left;
position:relative;
right:50%;
border:thin solid red;
}
</style>
</head>
<body>
<div class="center">
<div class="helper">
<div class="content">Centered on the page<br>and left aligned!</div>
</div>
</div>
</body>
</html>