CSS3 Multi-columns

Категория: Design/UI/CSS

Свойство multi-column позволяет разбивать контент (текст и блоки) на несколько колонок для "перетекания" текста между несколькими колонками.

Посмотреть примеры разметки в живую вы можете в конструкторе колонокhttp://ie.microsoft.com/testdrive/graphics/hands-on-css3/hands-on_multi-column.htm

Поддержка

Поддерживается всеми актуальными на 2014 браузерами (пока еще с префиксами -moz и -webkit) и IE10+.

Свойство column-span не поддерживается в Firefox 29!

Внимание!

Вы не можете управлять направлением "перетекания"! Элементы всегда будут располагаться сверху вниз и потом слева направо.

Фиксированная ширина колонок. * Количество колонок ограничивается шириной родителя.

.content { column-width: 13em }

Фиксированное количество колонок:

.content { column-count: 3 }

Отступ между колонками:

.content { column-gap: 5px }

Разделитель колонок:

.content { column-rule: 1px solid #333 }

Растянуть внутренний элемент между всеми колонками (не поддерживает Firefox 29):

.content h1 { -webkit-column-span: all }

Режим распределения контента (по умолчанию balance):

.content { column-fill: auto } /* auto | balance */

* Не понимаю для чего нужен auto...

Пример

Разметка

<article>
    <h1>Title spans across all columns</h1>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</article>

CSS

article {
  margin: 100px auto; width: 50%; height: 40%; 
  padding: 5px; border: 1px solid #ccc;
}
article {
    -webkit-column-count: 3;
    -webkit-column-rule: 1px solid #ccc; /* вертикальная линия между колонками */
    -webkit-column-gap: 2em; /* ширина отступа между колонками */

    -moz-column-count: 3;
    -moz-column-rule: 1px solid #ccc;
    -moz-column-gap: 2em;
}
article .item {
    width: 100%;
    height: 50px;
    background-color: #8edd80;
    margin-bottom: 5px;
    display:inline-block; /* чтобы не срезало блоки */
}
article h1 {
    -webkit-column-span: all; /* Not support FF29 */
}

Результат


Пример перетекания inline блоков между 3-мя колонками

#css3, #multi-columns, #grid