2013-03-06 4 views
2

Для вертикального выравнивания динамического текста я использую span тег с display: table-cell. Он обернут div с размером display: table, и он работает так, как должен.display: свойство table в старых браузерах

Но проблема в том, что это не работает в старых версиях firefox. К сожалению, мне нужна поддержка firefox 7 и выше.

Есть ли более простое решение помимо использования реальных таблиц html?

+0

Опишите "vertical align"? – Liam

+1

Проверка @Liam [ссылка MDN] (https://developer.mozilla.org/en-US/docs/CSS/vertical-align). – Barney

+0

@ Барни Я думал о нижнем подходе Джеймса ниже. Вероятно, есть лучший способ сделать то, что он пытается сделать, но я не знаю, потому что я не знаю, что он пытается сделать. Если это не таблица, не следует использовать табличную раскладку! – Liam

ответ

0

В соответствии с ссылкой MDN для display, table дисплей через CSS has been supported since Firefox version 1. Вы должны быть в порядке!

+0

В соответствии с этим ваша большая проблема - это IE! – Liam

+0

@Liam true, но вопрос OP о Firefox. – Barney

+0

Я не ответил. Ты прав. Проблема заключается в том, что Firefox версии 9 и старше не применяют это свойство, за исключением прямых/первых детей. – swolfish

1

display:table-cell не все и заканчивают все вертикальное выравнивание. Вертикальное выравнивание может быть легко достигнуто только с помощью CSS.

Вам понадобятся три вещи:

  1. А, содержащий делитель с определенной высоты (жидкости или статична, она не имеет значения).
  2. Относительно позиционированный разделитель с 50% высоты.
  3. Контейнер для контента, который вы хотите вертикально выровнять.

Однако вам нужно знать точную высоту вашего контейнера контента.

div#container { 
    height:500px; 
} 

div#paddingDivider { 
    height:50%; 
} 

div#contentContainer { 
    margin:0 auto; /* Centrally align the element */ 
    height:100px; /* Declare the exact height of the element */ 
    margin-top:-50px; /* Position half of the element inside the padding divider */ 
} 

JSFiddle example.

+0

Это прекрасно работает, когда текст всегда имеет одинаковую высоту, но когда у вас длинный текст, который разбит в несколько строк, это не вертикально центрируется в середине родительского контейнера. – swolfish

+0

Вот почему я упомянул, что вам нужно знать точную высоту контейнера. Если текст не изменится, укажите 'line-height'. Ваша общая высота - это 'line-height * количество строк'. Если текст, вероятно, изменится, вам нужно будет использовать JavaScript для вычисления «внешней высоты» контейнера контента и установить его атрибут «margin-top» в половину этого значения. –

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

  • Нет связанных вопросов^_^