True Center Вертикальный и горизонтальный CSS Div
Как можно создать подлинный центр CSS div cross browser, например, для использования на странице холдинга?
Я пробовал этот трюк css в 2007 году - Как сосредоточиться на объекте в центре, но, как вы можете видеть из моего JSFiddle кода, это не 100% -ный центр.
HTML:
<div class="center">
<p>Text</p>
</div>
CSS:
.center{
position: fixed;
top: 50%;
left: 50%;
margin-top: -50px;
margin-left: -100px;
border:5px solid black;
}
Ответы
Ответ 1
Эта техника требует, чтобы элемент имел фиксированную ширину и высоту. Вы не устанавливаете ширину и высоту. Основываясь на вашей границе и границах, чтобы центрировать его, ширина должна составлять 190 пикселей, а высота должна составлять 90 пикселей. Использование line-height
и text-align
в сочетании с фиксированной шириной и высотой делает текст и границу по центру. Попробуй.
CSS
.center{
position: fixed;
top: 50%;
left: 50%;
width: 190px;
height: 90px;
line-height: 90px;
text-align: center;
margin-top: -50px;
margin-left: -100px;
border:5px solid black;
}
Ответ 2
Вы можете сделать это с помощью чистого CSS:
html {
width: 100%;
height: 100%;
}
body {
min-width: 100%;
min-height: 100%;
}
div.centeredBlueBox {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
width: 300px;
height: 200px;
background-color: blue;
}
Важно 300px
конкретные (например, 300px
) и не выводимые (например, auto
или 30%
) значения для width
и height
.
Ответ 3
<div style='position:absolute; left:50%; top:50%; margin-left:(-)width_of_your_element/2px; margin-top:(-)height_of_your_element/2px'>
например
<!DOCTYPE html>
<html>
<body>
<div style='border:1px solid; width:200px; height:200px; position:absolute; left:50%; top:50%; margin-left:-100px; margin-top:-100px'>hallo</div>
</body>
</html>
Ответ 4
Это то, что я сделал
<html>
<head>
<title>Page Title</title>
<style>
.center { margin:auto; width:500px; background-color:green; }
</style>
</head>
<body>
<div class="center">
<p>Help me please</p>
</div>
</body>
</html>
Надеюсь это поможет.
Ответ 5
Это мое решение:
<div style="position: absolute; left: 50%; height: 100%;">
<div style="position: relative; left: -50%; display: table; height: 100%;">
<div style="display: table-cell; vertical-align: middle;">
//your content here
</div>
</div>
</div>
Он работает во многих браузерах. И нет проблем с добавлением контента после макета.
Ответ 6
Это дополнительный пример с установщиком высоты, созданным для вертикального выравнивания IE. Дополнительный пролет имеет вертикальное выравнивание: среднее.
<style type="text/css">
html, body {
margin: 0;
padding: 0;
overflow:hidden;
text-align:center;
}
html, body{
height: 100%;
}
#loginContainer {
margin: 0 auto;
display: table;
min-width:300px;
text-align:left;
height: 85%; /* vertical align not exact in the middle */
}
#loginContainer .label{
width: 25%;
float:left;
white-space:nowrap;
line-height:20px;
}
#loginContainer h2{
border-bottom:2px solid #B4C3E1;
border-width:0 0 3px;
padding:2px 4px;
}
.mainHeader {
position:absolute;
top:0;
left:0;
text-align:center;
width:100%;
font-size:2em;
white-space:nowrap;
}
.detailsText {
border-top:1px solid #F60;
margin-top:5px;
clear:both;
}
/* layout horizontal and vertical */
.horizontalBox {
display: table-cell;
vertical-align: middle; /* not seen by IE6-7 */
height: 100%;
white-space: nowrap;
}
.verticalBox {
padding: 55px 0 0 0; /* 55px height of logo */
}
.rightText {
text-align:right;
}
</style>
<!--[if lte IE 8]>
<style type="text/css">
#loginContainer {
width:300px; /* minimum width */
}
.horizontalBox {
text-align: center;
}
.verticalBox, .heightSetter {
display: inline-block;
vertical-align: middle;
text-align: left;
zoom:1;
}
.heightSetter {
height: 100%;
}
.verticalBox {
display: inline;
height: 0;
}
.heightSetter {
width: 1px;
}
</style>
<![endif]-->
<div class="mainHeader">This is the Header content</div>
<div id="loginContainer">
<div class="horizontalBox">
<div class="verticalBox">
<h2>My header of the vertical box</h2>
<p>My Content</p>
</div>
<span class="heightSetter"></span>
</div>
</div>
Ответ 7
Взгляните на это; довольно умная статья.
Ответ 8
Установите тип display
DIV
в table-cell
. Затем вы можете использовать обычный vertical-align
, как и элемент TD
.
<div style="display: table-cell; vertical-align: middle; height: 200px;">
Centered Text
</div>