2015-07-30 1 views
0

Я пытаюсь создать горизонтальную компоновку фиксированных высот, элементов встроенного блока, содержащих в ней столбцы CSS.Создание многоколоночного контейнера inline-block для соответствия ширине содержимого

article { 
    -webkit-column-width: 200px; 
    -moz-column-width: 200px; 
    column-width: 200px; 
    -webkit-column-gap: 1em; 
    -moz-column-gap: 1em; 
    column-gap: 1em; 
    -moz-column-fill: auto; 
    column-fill: auto; 
    height: 350px; 
    display: inline-block; 
} 

Проблема заключается в том, что ширина инлайн-блочных элементов неправильной установки (столбцы занимают меньше/больше места, чем контейнер обеспечивает) - кажется, что ширина соответствует содержанию, прежде чем он превращается в столбцы (в Chrome - в контейнерах результатов находятся друг над другом) или подходит для одного столбца (в Firefox и IE - в контейнерах результатов перекрываются).

Пример (проверьте ширину элемента статьи): http://codepen.io/anon/pen/yNQdVE

Единственное решение, которое я придумал, чтобы сделать контейнер подходит один столбец и использовать JS, чтобы установить ширину с шириной полосы прокрутки. Кажется, что он работает нормально во всех трех браузерах, которые я тестировал.

Пример: http://codepen.io/anon/pen/gpQNWg

Есть ли чистый CSS решение этой проблемы?

+0

Я не уверен, что правильно понимаю, но вы хотите, чтобы ваши статьи выстраивались рядом друг с другом в горизонтальной компоновке, к сожалению, они обертываются, когда они становятся слишком длинными? Одно из решений, которое заставляло их сидеть бок о бок, - дать вашему «телу» свойство «white-space: nowrap» 'css. Поскольку все ваши статьи являются «display: inline-block», они считаются интервалом в этой точке. 'white-space: nowrap;' гарантирует, что весь текст не будет завершен, если он попадет в конец контейнера. – ntgCleaner

+0

Да, вы это поняли. Я знаю, что мне нужно установить 'white-space: nowrap; ' для предотвращения упаковки содержимого. Дело в том, что неправильная ширина элементов встроенного блока ломает макет. –

ответ

0

Изменение отображения от inline-block до table-cell, кажется, дает вам желаемые результаты.

В этом ручке этот стиль применяется вместе с границами для визуального обеспечения.

http://codepen.io/TheLarkInn/pen/jPQjzK

Представляется, что, хотя это встроенный блок элемент, что браузер принимает второй столбец растягивает ширину окна просмотра, несмотря на ширину 300 пикселей на колонку.

Вы также можете обернуть все предметы в элемент, используя также display: flex;.

+0

Похоже, что вы забыли сохранить свою ручку, а изменение встроенного блока на ячейку таблицы не делает этого трюка. Моя основная цель - сделать контейнеры горизонтально прокручиваемыми (с неизвестным количеством контейнеров), поэтому я не могу использовать flexbox. –