2013-12-24 3 views
1

Здравствуйте вы знаете, почему вертикальное выравнивание (текст в 4 темных DIVs) не работает в моем случае, несмотря на vertical-align: middle; и display: table-cell; Благодаря http://jsfiddle.net/ymE8R/1/Выдать вертикальное выравнивание текста в DIV

.block { 
    background: red; 
    width:90%; 
    Height: 200px; 
} 
.col1, .col2, .col3, .col4 { 
    float: left; 
    width: 25%; 
    background: red; 
    text-align: center; 
    font-size: 12px; 
    color: #fff; 
    font-weight: 300; 
    height: 24px; 
    vertical-align: middle; 
    display: table-cell; 
} 
+0

Вы хотите, чтобы 4 дочерних div были вертикально центрированы в родительском div (красный блок)? –

+1

Поскольку вы переопределяете отображаемое значение каждого '.col *' с помощью 'float: left;' - Floats автоматически становится блочным, а 'vertical-align' не применяется к элементам уровня блока. – Adrift

+0

Вы имеете в виду что-то вроде: http://jsfiddle.net/audetwebdesign/ymE8R/9/ –

ответ

0

Если добавить строку - высота, равная высоте div, будет выравниваться по вашему желанию.

В этом случае добавьте line-height:24px; в .col1, .col2, .col3, .col4 {} в css.

Fiddle here.

1

Плавая инкапсулирующие divs, вы сделали их Уровень блока элементов. Согласно the MDN: :

На элементах уровня блока свойство CSS высотой строки определяет минимальную высоту строк строки внутри элемента.

Таким образом, объявить line-height свойство, которое так высоко, как инкапсулирующего DIV:

.col1, .col2, .col3, .col4 { 
    height: 24px; 
    line-height: 24px; 
} 

Это приводит к тексту внутри этих колонн центрируется по вертикали в пределах DIV:

enter image description here

Fiddle here.

Смежные вопросы