Вертикально по центру выровняйте div внутри другого div - PullRequest
0 голосов
/ 16 февраля 2012

скажи, что у меня есть

<div id ="outer" class="outer">
    <div id= "inner" class="inner">
      //some stuff
    </div>
</div>

внутренний div имеет динамическую высоту, он изменяется в зависимости от того, что находится внутри div. внешний div - это просто контейнер, для которого задана высота окна.

Я хочу установить его так, чтобы внутренний div был вертикально центрирован по внешнему div. Есть ли способ сделать это легко в CSS или необходим JavaScript?

РЕШЕНИЕ, которое Я НАШЕЛ:

var container= document.getElementById("outer");
var inner= document.getElementById("inner");
var inHeight=inner.offsetHeight;

container.style.height=(window.innerHeight-10);
container.style.width=window.innerWidth;

var conHeight=container.offsetHeight;

inner.style.marginTop=((conHeight-inHeight)/2);

В случае, если кто-то еще ищет решение той же проблемы, это сработало для меня.

выделенный текст

Ответы [ 4 ]

3 голосов
/ 16 февраля 2012

попробуйте http://jsfiddle.net/gLChk/12/

, но это не будет поддерживаться в браузерах IE <8.Чтобы он работал во всех браузерах, вам нужно написать js, который найдет высоту .inner и применить эти свойства CSS </p>

$(document).ready(function(){
var inner = $('.inner'),
    ht = inner.height();

inner.css({'position':'absolute','top':'50%','margin':-ht/2+'px 0 0 0'});
});

Надеюсь, это поможет.:)

0 голосов
/ 16 февраля 2012

Попробуйте с

.inner {
top: 50%;
bottom: 50%;    
}

jsfiddle

приветствует

0 голосов
/ 16 февраля 2012
.outer {
    display: table;
    position: relative;
    width:100%;
    height:200px;
    border:1px red solid;
}
.inner {
    display: table-cell;
    position: relative;
    vertical-align: middle;
}
0 голосов
/ 16 февраля 2012

использование:

.inner
{
    margin-top:auto;
    margin-bottom:auto;
}
...