CSS вертикально центрированный элемент не переносится

#css #responsive-design #vertical-alignment #fluid-layout

#css #адаптивный дизайн #выравнивание по вертикали #fluid-layout

Вопрос:

Я центрирую элемент по вертикали, используя последний метод на этой странице. Он работает хорошо, но у него довольно большая проблема. Когда браузер слишком тонкий, чтобы элемент мог поместиться на всю ширину, вместо того, чтобы автоматически переносить слова, элемент прыгает вниз, чтобы быть ниже контейнера. Поскольку мой контейнер имеет overflow: hidden, это просто скрывает элемент.

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

Код здесь на случай, если JSFiddle недоступен:

CSS:

 .outer {
    height: 300px;
    background: black;
}

.outer:before {
    content: '';
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}

.inner {
    display: inline-block;
    vertical-align: middle;
    background: white;
}
  

HTML:

 <div class="outer">
    <div class="inner">
        test test test test test test test test test
    </div>
</div>
  

Для тех, кто любит картинки:

Хорошо:

хороший снимок экрана

Плохо:

плохой снимок экрана

Желаемый:

желаемый снимок экрана

В моей ситуации с центрированием высота содержимого неизвестна, но известна высота родительских элементов.

Есть ли у меня способ иметь вертикальное центрирование и плавный макет? (С чистым CSS)

Спасибо,

YM

РЕДАКТИРОВАТЬ: в ответе, который теперь удален, предлагается попробовать display: inline вместо display: inline-block для дочернего элемента. Это (возможно) ближе к тому, чего я хочу достичь, но не совсем так:

встроенный

Ответ №1:

HTML:

 <div id="outer">
  <div id="inner">
    <div>Some long content hereSome long content hereSome long content hereSome long content hereSome long content hereSome long content hereSome long content hereSome long content hereSome long content hereSome long content here</div>
  </div>
</div>
  

CSS:

 #outer {
    background: black;
}
#inner {
    display: table-cell;
    vertical-align: middle;
    height: 300px;
    width: 100%;
}

#inner div {
    background: white;
}
  

JSFiddle Смотрите больше здесь и здесь .

Комментарии:

1. Ewww, действительно ли ячейки таблицы — лучший способ сделать это? 🙁

2. @YM_Industries Насколько я знаю, да.

3. Черт, это отстой. Ну что ж, спасибо, я думаю, я пойду с этим.