2016-05-27 3 views
0

Я знаю, что этот вопрос был задан несколько раз здесь, но не нашел правильного ответа. Мне удалось обходное решение, чтобы сделать div полной высоты td. Но кажется невозможным выровнять текст по центру вертикально. Любая идея, как я могу это сделать? Я бы хотел, чтобы он был отзывчивым. Я имею в виду работать на всех устройствах. Благодарю.Div полная высота TD, с текстом по вертикали

<tr> 
    <td> 
     Small text 
    </td> 
    <td class="" style="height: 1px; height: 100%"> 
     <div style="position: relative"> 
      <span class="centered-text"> A very long text that I want to be centered inside parent div and of course parent td.</span> 
     </div> 
    </td> 
</tr> 

ответ

0

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

.text-container { 
    position: relative; 
} 

.centered-text { 
    position: absolute; 
    top: 50%; 
    -webkit-transform: translateY(-50%); 
    -ms-transform: translateY(-50%); 
    transform: translateY(-50%); 
} 

Если она также должна быть горизонтально по центру, использование следующие дополнения и заменить преобразующие свойства:

.centered-text { 
    left: 50%; 
    -webkit-transform: translate(-50%, -50%); 
    -ms-transform: translate(-50%, -50%); 
    transform: translate(-50%, -50%); 
} 

Edit: обновленные fiddle с позиции относительно того, чтобы заполнить пространство - показывает окончательный полностью центрированный результат.

+0

Спасибо. Я обычно избегаю позиции абсолютной, но на этот раз я доволен этим решением. Приветствия. – csm86

+0

Нет проблем! Я вообще согласен. Мое обычное эмпирическое правило состоит в том, что до тех пор, пока в потоке есть относительный родитель, вы, как правило, можете использовать абсолютное позиционирование. –

+0

Я просто столкнулся с другой проблемой. Если текст centerd очень длинный, он перекрывает родительский контейнер. Родитель td не увеличивается. Я обновил вопрос с помощью html. – csm86

1

Попробуйте добавить следующий CSS для вашего DIV:

div{ 
    display: table-cell; 
    vertical-align: middle; 
} 

Атрибут дисплея заставит ДИВ вести себя как ячейку таблицы, то есть вертикальный стиль выравнивания будет иметь эффект.

Пример: http://codepen.io/JasonGraham/pen/aZbdmy

+0

Спасибо за подсказку. Я пробовал это, но отображал: table-cell не позволяет моей div одинаковой высоты родительского TD. – csm86

+0

Извинения, мое недоразумение! Если вы хотите сохранить высоту div, я бы выбрал аналогичное решение, подобное тому, которое было приведено выше @ghost_dad. Отобразить относительный текст в родительском контейнере, используя «верх» для выравнивания по вертикали :). –

+0

div {высота: 100%; } позволяет вашему div заполнить весь элемент правды. Легче было бы ваш текст здесь –

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