2013-05-10 3 views
3

Я новичок в формате HTML/CSS, и вертикальное выравнивание элементов в боковом div приводит меня в бешенство. В принципе, у меня есть div, которые содержат смесь текста и изображений, и все, что я хотел сделать, это вертикальное выравнивание элементов в середине ediv.Как вертикально выравнивать элементы внутри div

В соответствии с this post:

Встроенные элементы (и только встроенные элементы) могут быть выровнены по вертикали в их контексте с помощью вертикального выравнивания: посередине. . Тем не менее, «контекст» не вся высота родительского контейнера, то высота текста линии они в

Итак, я создаю SPAN и событие установить diplay: inline, но ничего не работает:

<div id="main_section" class="main_align" > 
    <span class="inline"> 
     <span class="inline"><img src="http://placehold.it/50x50" /></span> 
     &nbsp; 
     <span class="small inline">A Very Small Text</span> 
     &nbsp; 
     <span class="medium inline">Medium String</span> 
    </span> 
</div> 

Адрес jsfiddle.

Любые указатели будут оценены.

Примечание: Я счастлив, если это работает в Chrome и Firefox. Нет необходимости решать специфические проблемы IE.

+0

Ответы от @lazyprogrammer и @ j08691 совершенно нормален и имеет минимум необходимых инструкций, но если вы хотите, чтобы выровнять текст (не их соответствующих исходным), а затем проверить мой ответ, что нужно использовать ' inline-block' – FelipeAls

ответ

6

Если вы хотите выровнять тексты разных размеров по вертикали (кроме их базовой линии), чем следующая скрипку является возможным решением, используя inline-block: http://jsfiddle.net/vGKjj/13/

HTML:

<div id="main_section" class="main_align" > 
    <span> 
     <span class="vam"><img src="http://placehold.it/50x50" /></span> 
     &nbsp; 
     <span class="small vam">A Very Small Text</span> 
     &nbsp; 
     <span class="medium vam">Medium String</span> 
    </span> 
</div> 

CSS:

.vam { 
    vertical-align: middle; 
} 
span.vam { 
    display: inline-block; 
} 
.vam img { 
    vertical-align: top; /* removes a white gap below image */ 
} 
+0

+1 приятное и полное решение – lazyprogrammer

1

Ваша проблема может быть решена путем добавления следующего кода

.inline img{ 
    vertical-align:middle; 
} 

Просто другая нота
Также трюк, который хорошо работает, если у вас есть фиксированную высоту, сделать высоту строки равной ей.
Например: -

.yourDiv{ 
    height:50px; 
    line-height:50px; 
} 

jsfiddle

+0

Спасибо. Любая идея, если есть что-то, что я могу сделать, чтобы текст выравнивался по середине? – marcoseu

+0

см. Редактировать! выше всего работает, только если у вас есть только одна строка – lazyprogrammer