Я только что наткнулся на этот старый пост, и хотя я уверен, что user01 давно нашел свой ответ, я обнаружил, что текущие ответы не совсем работают. Немного поигравшись с информацией, предоставленной другими, я нашел решение, которое работало в IE, Firefox и Chrome. В CSS:
html, body {
height: 100%;
}
html {
display: table;
margin: auto;
}
body {
display: table-cell;
vertical-align: middle;
}
Это почти идентично ответу Абернье, но я обнаружил, что включение ширины нарушит центрирование, как и исключение автоматического поля. Я надеюсь, что любой, кто наткнется на эту тему, найдет мой ответ полезным.
Примечание. Не центрируйте html, body { height: 100%; }только по горизонтали.
Хороший ответ. Просто интересно (поскольку у меня нет большого опыта работы с HTML), необходимо ли устанавливать высоту на 100%?
закат 8
7
@JackHumphries Высота необходима только в том случае, если вы хотите выровнять центр страницы как по вертикальной, так и по горизонтальной оси. Если горизонтальное - это все, что вам нужно, вы можете не указывать высоту.
Это такой простой ответ, но при этом самый чистый и эффективный способ центрировать тег body в середине страницы.
Justinhartman
1
Хотя он и короткий, он также не работает в IE, Edge Legacy, Edge, Chrome или Firefox. Проблема в том, что margin auto работает только тогда, когда ширина элемента меньше ширины родительского элемента. Поскольку для параметра body по умолчанию установлено значение 100%, по краям нет места для автоматической вставки полей. Вы можете использовать, body { margin:0 auto; max-width: 700px; }и тогда ваше тело будет до 700 пикселей и позволит обертывать на небольших устройствах.
user3347790
17
РЕДАКТИРОВАТЬ
На сегодняшний день с помощью flexbox вы могли
body {
display:flex; flex-direction:column; justify-content:center;
min-height:100vh;
}
ПРЕДЫДУЩИЙ ОТВЕТ
html, body {height:100%;}
html {display:table; width:100%;}
body {display:table-cell; text-align:center; vertical-align:middle;}
Какой DOCTYPE позволяет использовать styleатрибут htmlобъекта?
ceven
1
@ceving: не уверен, что понял ... значит, это недействительный CSS?
Абернье,
11
Если у меня есть что-то, чем я люблю делиться относительно CSS, так это МОЙ ЛЮБИМЫЙ СПОСОБ ЦЕНТРАНИРОВАНИЯ ВСЕГО ПО ОБЕИМ ОСИ !!!
Преимущества этого метода :
Полная совместимость с браузерами, которые люди действительно используют
Таблицы не требуются
Возможность многократного использования для центрирования любых других элементов внутри их родителя
Подходит для родителей и детей с динамическими (изменяющимися) размерами!
Я всегда делаю это, используя 2 класса: один для указания родительского элемента, содержимое которого будет центрировано ( .centered-wrapper), и второй, чтобы указать, какой дочерний элемент родительского элемента центрирован ( .centered-content). Этот второй класс полезен в случае, когда у родителя несколько дочерних элементов, но нужно центрировать только 1). В этом случае bodyбудет то .centered-wrapper, а внутреннее divбудет .centered-content.
Идея для центрирования теперь будет делать . Это легко упростит горизонтальное центрирование, сквозное , а также позволит центрировать по вертикали, как вы увидите..centered-contentinline-blocktext-align: center;
Это дает вам 2 действительно многоразовых класса для центрирования любого дочернего элемента внутри любого родителя! Просто добавьте .centered-wrapperи .centered-contentклассы.
Итак, что случилось с этим :beforeэлементом? Это облегчает vertical-align: middle;и необходимо, потому что вертикальное выравнивание не относительно высоты родителя - вертикальное выравнивание относительно высоты самого высокого родного брата !!! . Следовательно, гарантируя, что есть брат или сестра, высота которого равна высоте родителя (100% высоты, 0 ширины, чтобы сделать его невидимым), мы знаем, что вертикальное выравнивание будет относительно высоты родителя.
Одна последняя вещь: Вы должны убедиться , что ваши htmlи bodyтеги размер окна так , чтобы центровка к ним так же , как центрирование в браузере!
Я использую flexbox на html. Для приятного эффекта вы можете сопоставить хром браузеров, чтобы отображать контент на экранах, размер которых превышает максимальные значения вашей страницы. Я считаю, что это #eeeeeeочень хорошо подходит. Вы можете добавить тень блока для хорошего эффекта плавания.
html{
display: flex;
flex-flow: row nowrap;
justify-content: center;
align-content: center;
align-items: center;
height:100%;
margin: 0;
padding: 0;
background:#eeeeee;
}
body {
margin: 0;
flex: 01 auto;
align-self: auto;
/*recommend 1920 / 1080 max based on usage stats, use 100% to that point*/width: 100%
max-width: 900px;
height: 100%;
max-height: 600px;
background:#fafafa;
-webkit-box-shadow: 0px0px96px0pxrgba(0,0,0,0.75);
-moz-box-shadow: 0px0px96px0pxrgba(0,0,0,0.75);
box-shadow: 0px0px96px0pxrgba(0,0,0,0.75);
}
изображение / данные любезно предоставлены StatCounter
Хороший современный ответ. Всего несколько комментариев. (a) Префикс vendor-prefix для box-shadowвероятно избыточен, поскольку браузеры flexтакже поддерживают box-shadow. (б) Есть много CSS, который украшает ваш ответ, но затрудняет различение важных частей. Спасибо
Manngo 06
Очень много (b), в комментарии @ Manngo выше.
cjauvin
Хороший ответ. Современное. Но могло быть и попроще с тем же содержанием.
Ответы:
Я только что наткнулся на этот старый пост, и хотя я уверен, что user01 давно нашел свой ответ, я обнаружил, что текущие ответы не совсем работают. Немного поигравшись с информацией, предоставленной другими, я нашел решение, которое работало в IE, Firefox и Chrome. В CSS:
html, body { height: 100%; } html { display: table; margin: auto; } body { display: table-cell; vertical-align: middle; }
Это почти идентично ответу Абернье, но я обнаружил, что включение ширины нарушит центрирование, как и исключение автоматического поля. Я надеюсь, что любой, кто наткнется на эту тему, найдет мой ответ полезным.
Примечание. Не центрируйте
html, body { height: 100%; }
только по горизонтали.источник
Можешь попробовать:
body{ margin:0 auto; }
источник
body { margin:0 auto; max-width: 700px; }
и тогда ваше тело будет до 700 пикселей и позволит обертывать на небольших устройствах.РЕДАКТИРОВАТЬ
На сегодняшний день с помощью flexbox вы могли
body { display:flex; flex-direction:column; justify-content:center; min-height:100vh; }
ПРЕДЫДУЩИЙ ОТВЕТ
html, body {height:100%;} html {display:table; width:100%;} body {display:table-cell; text-align:center; vertical-align:middle;}
источник
style
атрибутhtml
объекта?Если у меня есть что-то, чем я люблю делиться относительно CSS, так это МОЙ ЛЮБИМЫЙ СПОСОБ ЦЕНТРАНИРОВАНИЯ ВСЕГО ПО ОБЕИМ ОСИ !!!
Преимущества этого метода :
Я всегда делаю это, используя 2 класса: один для указания родительского элемента, содержимое которого будет центрировано (
.centered-wrapper
), и второй, чтобы указать, какой дочерний элемент родительского элемента центрирован (.centered-content
). Этот второй класс полезен в случае, когда у родителя несколько дочерних элементов, но нужно центрировать только 1). В этом случаеbody
будет то.centered-wrapper
, а внутреннееdiv
будет.centered-content
.<html> <head>...</head> <body class="centered-wrapper"> <div class="centered-content">...</div> </body> </html>
Идея для центрирования теперь будет делать . Это легко упростит горизонтальное центрирование, сквозное , а также позволит центрировать по вертикали, как вы увидите.
.centered-content
inline-block
text-align: center;
.centered-wrapper { position: relative; text-align: center; } .centered-wrapper:before { content: ""; position: relative; display: inline-block; width: 0; height: 100%; vertical-align: middle; } .centered-content { display: inline-block; vertical-align: middle; }
Это дает вам 2 действительно многоразовых класса для центрирования любого дочернего элемента внутри любого родителя! Просто добавьте
.centered-wrapper
и.centered-content
классы.Итак, что случилось с этим
:before
элементом? Это облегчаетvertical-align: middle;
и необходимо, потому что вертикальное выравнивание не относительно высоты родителя - вертикальное выравнивание относительно высоты самого высокого родного брата !!! . Следовательно, гарантируя, что есть брат или сестра, высота которого равна высоте родителя (100% высоты, 0 ширины, чтобы сделать его невидимым), мы знаем, что вертикальное выравнивание будет относительно высоты родителя.Одна последняя вещь: Вы должны убедиться , что ваши
html
иbody
теги размер окна так , чтобы центровка к ним так же , как центрирование в браузере!html, body { width: 100%; height: 100%; padding: 0; margin: 0; }
Скрипка: https://jsfiddle.net/gershy/g121g72a/
источник
http://bluerobot.com/web/css/center1.html
body { margin:50px 0; padding:0; text-align:center; } #Content { width:500px; margin:0 auto; text-align:left; padding:15px; border:1px dashed #333; background-color:#eee; }
источник
0px
в конце, а неauto
?Я использую flexbox на
html
. Для приятного эффекта вы можете сопоставить хром браузеров, чтобы отображать контент на экранах, размер которых превышает максимальные значения вашей страницы. Я считаю, что это#eeeeee
очень хорошо подходит. Вы можете добавить тень блока для хорошего эффекта плавания.html{ display: flex; flex-flow: row nowrap; justify-content: center; align-content: center; align-items: center; height:100%; margin: 0; padding: 0; background:#eeeeee; } body { margin: 0; flex: 0 1 auto; align-self: auto; /*recommend 1920 / 1080 max based on usage stats, use 100% to that point*/ width: 100% max-width: 900px; height: 100%; max-height: 600px; background:#fafafa; -webkit-box-shadow: 0px 0px 96px 0px rgba(0,0,0,0.75); -moz-box-shadow: 0px 0px 96px 0px rgba(0,0,0,0.75); box-shadow: 0px 0px 96px 0px rgba(0,0,0,0.75); }
изображение / данные любезно предоставлены StatCounter
источник
box-shadow
вероятно избыточен, поскольку браузерыflex
также поддерживаютbox-shadow
. (б) Есть много CSS, который украшает ваш ответ, но затрудняет различение важных частей. Спасибо<style> body{ max-width: 1180px; width: 98%; margin: 0px auto; text-align: left; } </style>
Просто примените этот стиль перед применением любого CSS. Вы можете изменить ширину в соответствии с вашими потребностями.
источник
Просто пиши
<body> <center> *Your Code Here* </center></body>
источник
Попробуй это
body { max-width: max-content; margin: auto; }
источник