2013-05-02 4 views
1

Возможно ли центрировать вертикально, не зная высоты контейнера?центр вертикальный, не зная высоты контейнера

Я попытался отобразить: встроенный блок и вертикальный выровнять: средний, и он не работает. Что я делаю не так?

Здесь проверить: http://jsfiddle.net/dSq2n/

HTML:

<div class="wrap"> 
    <div class="red1"></div> 
    <div class="red2"></div> 

    <div class="text"> 
     first<br> 
     second<br> 
     third<br> 
     forth 
    </div> 
</div> 

CSS:

.wrap{ 
    position:absolute; 
    top:10px; left:10px; 
    width:200px; 
    text-align:center; 
    background:grey; 
} 

.red1, .red2{ 
    position:absolute; 
    width:20px; height:20px; 
    display:inline-block; /* ? */ 
    vertical-align: middle; /* ? */ 
    background:red; 
} 

.red1{ 
    left:0px; 
} 
.red2{ 
    right:0px; top:0px; 
} 
+0

, как вы можете использовать 'вертикальный align' с' позиции absolute'? –

ответ

1

Вы используете position: absolute; так используя vertical-align, бесполезна, сделайте это как этот

Demo

.red1, .red2{ 
    position:absolute; 
    width:20px; height:20px; 
    background:red; 
    top: 50%; 
    margin-top: -10px; 
} 

Также вы необходимо удалить top: 0; из

.red2{ 
    right:0px; 
} 

Объяснение: Что мы делаем здесь, используя top: 50%;, чтобы нанести элемент на 50%; но это не совсем по центру, поэтому мы вычитаем -10px; с использованием margin-top, которое 1/2 от общей высоты элемента, который вы хотите отцентрировать вертикально

+0

Вы правы. Спасибо. У меня 3 хорошие ответы и в ту же самую минуту. Я не знаю, ведьма, которую я должен выбрать? – Nrc

1

Предполагая, что вы хотите вертикально центрировать красные коробки, да, это возможно. Но вам нужно знать высоту этих ящиков (что вы делаете). Просто используйте следующие свойства:

top: 50%; 
margin-top: -10px; // half the height of the element 

демо: http://jsfiddle.net/dSq2n/2/

1

Используется для этого Css

.red1, .red2{ 
    position:absolute; 
    width:20px; height:20px; 
    top:50%;margin-top:-10px; 
    margin-top:-10px; 
    background:red; 
} 
.red1{left:0;} 
.red2{right:0;} 

Удалитьdisplay inline-block

Demo

+0

У меня есть 3 хороших ответа и в ту же самую минуту. Я не знаю, ведьма, которую я должен выбрать? – Nrc

0

Вы не можете использовать position:absolute, а затем сказать vertical-align:middle

+0

Я не понимаю вашего ответа. Это уже положение: абсолютное и вертикальное выравнивание: среднее. Что вы имеете в виду? – Nrc

+0

Что вы ** не можете ** – Flowen

1

здесь является решение попробовать это проверить эту скрипку http://jsfiddle.net/sarfarazdesigner/dSq2n/6/

.red1, .red2{ 
    position:absolute; 
    width:20px; height:20px; 
    display:block; /* how you want to display */ 
    top:50%; /* give position from top */ 
    margin-top:-10px; /* put minus margin from top formula is total height/2 */ 
    background:red; 
} 

.red1{ 
    left:0px; 
} 
.red2{ 
    right:0px; 
} 
Смежные вопросы