2016-05-23 4 views
1

На самом деле, я занимаюсь центрированием текста по вертикали в div. Прочтите много инструкций в Интернете. Но понравился тот, в котором я могу отображать контейнер div как таблицу, а затем дочерний div внутри него (в данном случае .middle), который будет отображаться как table-cell. Оно работает. Но единственная проблема заключается в том, что всякий раз, когда я пытаюсь установить высоту div .container на 100%, div сжимает, чтобы обернуть себя в текстовую строку. Однако, когда я определяю высоту контейнера .container явно, тогда я могу получить желаемую ширину с текстом, полностью центрированным.Вертикальный текст центра. Показать таблицу. Высота Div не увеличивается

Может ли кто-нибудь объяснить, почему это так? Пожалуйста, обратитесь к снимкам экрана, чтобы понять это лучше.

Screenshot with .container height:200px Screenshot with .container height:100%

html, 
 
body { 
 
    height: 100%; 
 
    width: 100%; 
 
    left: 0px; 
 
    top: 0px; 
 
    margin-top: 0px; 
 
    margin-right: 0px; 
 
    margin-bottom: 0px; 
 
    margin-left: 0px; 
 
    background-color: rgba(0, 0, 153, 1); 
 
} 
 
.container { 
 
    display: table; 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 
.middle { 
 
    display: table-cell; 
 
    vertical-align: middle; 
 
} 
 
.inner { 
 
    display: table; 
 
    margin: 0 auto; 
 
}
<div class="container"> 
 

 
    <div class="middle"> 
 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
 

 
    </div> 
 
</div>

+0

Для того, чтобы работать с '%' как значение высоты вам нужно также задайте значения родительских элементов. В этом случае, если вы хотите, чтобы полная высота окна 'html и body' теги должны быть' 100% 'тоже; или родительский контейнер должен иметь фиксированную высоту. – DaniP

+1

отредактировал ваше сообщение и превратил ваш код в фрагмент .. и я не понимаю ваш вопрос, он работает как ожидалось –

ответ

1

Родительский контейнер должен также его высота явно указано для того, чтобы иметь возможность использовать percentage на ребенка. В противном случае он не знает, что значение 100% относится, если вы не дадите position: absolute; и установить другой контейнер (с высотой) до position: relative;

+0

Хорошо, теперь я понимаю. В этом случае высота тела должна определяться в пикселях. но что, если я не хочу явно определять высоту в пикселях? (Для того, чтобы, если я планирую добавить непрерывный текст, проходящий вертикально на 2-3 страницы), я хочу, чтобы дочерний и родительский div расширялись горизонтально. А также сохранение функции центра текста! –

+0

Это не нужно указывать в 'pixels'. Вы можете использовать '%' или 'vh \ vw'. В этом случае вы можете попробовать использовать 'min-height'. – Ciprianis

+0

Извините, я забыл вставить часть тела в код css выше. арендовать см. код сейчас, высота тела определяется как 100% –

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