Вертикально и горизонтально Выровнять внутренний DIV-центр страницы
Возможный дубликат:
Лучший способ центрировать <div> на странице по вертикали и по горизонтали?
На моей целевой странице сайта есть Container
DIV со 100% высотой и шириной. Я могу выровнять div InnerContainer
в центре по горизонтали, но я не могу поместить его в центр по вертикали. Я изменил несколько свойств, в основном результат остается таким же.
У меня есть тот же пример http://jsfiddle.net/cwkzq/12/, и я не уверен, где я делаю что-то неправильно. Я был бы признателен за помощь в этом.
Код CSS
html, body,form { height: 100%; }
body { margin: 0; padding: 0; border: 1; background-color:Aqua; }
.Container { width: 100%;height: 100%; padding: 0; font-size: 12px; border:1px solid green;
vertical-align: middle; }
.InnerContainer
{ vertical-align: middle; width: 400px;height: 350px; border-left:1px solid;
border-right:1px solid; border-color:#f5f5f5;margin: 0 auto; padding: 0;
font-size: 12px; background-color:Red;
}
HTML-код
<!-- Container -->
<div class="Container">
<div class="InnerContainer">
<!-- TopMenu Bar -->
<div class="colorBar">
</div>
<!-- TopMenu Bar -->
<!-- Middle Part -->
<div class="MiddleWrapper">
<!-- Left Title -->
<div class="Title">
</div>
<!-- Left Title -->
<!-- Large Image -->
<div class="ImageLeftWrapper">
</div>
<!-- Large Image -->
<!-- Logo Wrapper -->
<div class="LogoWrapper">
</div>
<!-- Logo Wrapper -->
<!-- Page Text Area -->
<div class="PageText">
</div>
<!-- Page Text Area -->
<!-- Search Bar -->
<div class="SearchBar">
</div>
<!-- Search Bar -->
<!-- Banner Images -->
<div class="BannerImageWrapper">
</div>
<!-- Banner Images -->
</div>
<!-- Middle Part -->
<!-- Menu Wrapper -->
<div class="MenuWrapper">
</div>
<!-- Menu Wrapper -->
<!-- Footer Section -->
<div class="FooterWrapper">
</div>
<!-- Footer Section -->
</div>
</div>
<!-- Container -->
В основном весь пример в сети имеет фиксированную ширину & Высота Контейнер DIV, а в моем случае мой контейнер div имеет 100% ширину и высоту
Ответы
Ответ 1
Если вы знаете точный размер блока, который вы хотите выровнять, это самый простой способ сделать это: jsfiddle
добавьте этот стиль в свой .InnerContainer
.InnerContainer{
width: 400px;
height: 350px;
border-left: 1px solid;
border-right: 1px solid;
border-color: #f5f5f5;
margin: 0 auto;
padding: 0;
font-size: 12px;
background-color: red;
position: relative;
left: 50%;
top: 50%;
margin-left: -200px;
margin-top: -175px;
}
Ответ 2
Ответ перешел к исходному вопросу
Я сделал это: (демо на dabblet.com)
Основной трюк в этой демонстрации заключается в том, что в нормальном потоке элементов, идущих сверху вниз, поэтому margin-top: auto
устанавливается на ноль. Однако для абсолютно позиционированного элемента действует одинаковое распределение свободного пространства и аналогичным образом может быть центрировано по вертикали в указанных top
и bottom
(не работает в IE7).
Этот трюк будет работать с любыми размерами div
.
HTML:
<div></div>
CSS
div {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
top:0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
Ответ 3
Привет, теперь вы можете использовать многие методы этого решения, как будто это
Css
.wraptocenter {
display: table-cell;
text-align: center;
vertical-align: middle;
width: ...;
height: ...;
}
.wraptocenter * {
vertical-align: middle;
}
.wraptocenter {
display: block;
background:green;
height:500px;
}
.wraptocenter span {
display: inline-block;
height: 100%;
width: 1px;
}
.child{
background:pink;
min-height:100px;
width:100px;
display:inline-block;
}
HTML
<div class="wraptocenter">
<span></span>
<div class="child"> Hello I am child and ver and horz....</div>
</div>
Live demo http://jsfiddle.net/w9dxv/1/
подробнее http://www.brunildo.org/test/img_center.html
если вы хотите горизонтальное и вертикальное выравнивание по центру
Css
.chv{
width:200px;
height:100px;
position:absolute;
left:50%;
top:50%;
margin-left:-100px;
margin-top:-50px;
border:solid 1px red;
}
HTML
<div class="chv">
Center horizontal and vertical align
</div>
Live demo http://jsfiddle.net/HkEVZ/1/
если u хотите Центрировать по горизонтали и вертикали одну строку текста
Css
.alldiv{
width:400px;
height:200px;
text-align:center;
line-height:200px;
border:solid 1px red;
}
HTML
<div class="alldiv">
Center horizontally and vertically a single line of text
</div>
Live demo http://jsfiddle.net/SVEtH/1/
если u хотите Центральное горизонтальное и вертикальное выравнивание Используется для свойств таблицы как это.
Css
.parent{
display:table;
height:300px;
text-align:center;
border:solid 1px red;
width:100%;
}
.child{
display:table-cell;
vertical-align:middle;
border:solid 1px green;
}
HTML
<div class="parent">
<div class="child">
Center horizontal and vertical align
</div>
</div>
Live demo http://jsfiddle.net/J3Zc6/2/