Многоколоночный текст

Влад Мержевич

Текст в несколько колонок давно уже применяется в издательском деле при вёрстке газет, журналов и книг. Человеку комфортнее читать текст определённой ширины, колонки как раз и обеспечивают разбиение большого текста на столбцы заданного размера. На сайтах это не всегда имеет смысл делать из-за ограниченности высоты окна браузера. Читателю вначале придётся прокрутить одну колонку вниз до конца, а затем вернуться наверх к началу следующей колонки, что довольно неудобно. Тем не менее, для некоторых текстов имеет смысл использовать именно многоколоночный текст из-за эффекивного использования свободного пространства по ширине.

CSS3 предлагает сразу четыре свойства для создания и управления колонками: column-count, column-gap, column-width и column-rule. Для наглядности значения некоторых свойств показаны на рис. 1.

Стилевые свойства для колонок

Рис. 1. Стилевые свойства для колонок

  • column-count — устанавливает оптимальное число колонок.
  • column-gap — расстояние между колонками.
  • column-width — оптимальная ширина колонок.
  • column-rule — разделительная линия между колонками.

Следует пояснить, что такое «оптимальное число» и «оптимальная ширина». Свойство column-count задаёт не точное количество колонок, а скорее желаемое. Браузер постарается разбить текст именно на столько колонок, но при уменьшении размеров окна будет сокращать число колонок, чтобы сохранить комфортность чтения. Аналогично обстоит и с шириной. Свойство column-width указывает минимальную ширину колонки, при этом браузер это значение может проигнорировать, если размер окна недостаточен для обеспечения заданной ширины колонок.

Браузер Chrome и Safari понимают эти свойства только с префиксом -webkit, а Firefox только с префиксом -moz. Комбинируем свойства для разных браузеров и получаем код, который создаёт трёхколоночный текст (пример 1).

Пример 1. Три колонки

HTML5CSS 3IE 9IE 10CrOpSaFx

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Колонки</title>
  <style>
   .column {
    -webkit-column-width: 200px;
    -moz-column-width: 200px;
    column-width: 200px;
    -webkit-column-count: 3;
    -moz-column-count: 3;
    column-count: 3;
    -webkit-column-gap: 30px;
    -moz-column-gap: 30px;
    column-gap: 30px;
    -webkit-column-rule: 1px solid #ccc;
    -moz-column-rule: 1px solid #ccc;
    column-rule: 1px solid #ccc;
   }
  </style>
 </head>
 <body>
  <div class="column">
   <p>Дистинкция дискредитирует непредвиденный интеллект, учитывая опасность,
   которую представляли собой писания Дюринга для не окрепшего еще немецкого
   рабочего движения. Аподейктика порождена временем. Платоновская академия
   методологически преобразует трансцендентальный предмет деятельности, хотя в
   официозе принято обратное. Отношение к современности реально создает позитивизм,
   однако Зигварт считал критерием истинности необходимость и общезначимость,
   для которых нет никакой опоры в объективном мире. Культ джайнизма включает
   в себя поклонение Махавире и другим тиртханкарам, поэтому гетерономная этика
   преобразует типичный принцип восприятия, при этом буквы А, В, I, О символизируют
   соответственно общеутвердительное, общеотрицательное, частноутвердительное и
   частноотрицательное суждения. Катарсис, по определению, непредвзято оспособляет
   онтологический даосизм, при этом буквы А, В, I, О символизируют соответственно
   общеутвердительное, общеотрицательное, частноутвердительное и частноотрицательное
   суждения.</p>
   <p>Культ джайнизма включает в себя поклонение Махавире и другим тиртханкарам, поэтому
   принцип восприятия неоднозначен. Платоновская академия раскладывает на элементы
   смысл жизни, учитывая опасность, которую представляли собой писания Дюринга для
   не окрепшего еще немецкого рабочего движения. Ощущение мира, как следует из
   вышесказанного, подчеркивает язык образов, учитывая опасность, которую представляли
   собой писания Дюринга для не окрепшего еще немецкого рабочего движения. Освобождение,
   следовательно, философски оспособляет закон исключённого третьего, изменяя привычную
   реальность.</p>
  </div>
 </body>
</html>

Результат данного примера в браузере Chrome показан на рис. 2. Вместо трёх колонок мы наблюдаем две из-за малой ширины окна браузера. При увеличении размеров окна число колонок вырастет до заданного, при дальнейшем уменьшении ширины окна, наоборот, количество колонок сократится до одной.

Многоколоночный текст

Рис. 2. Многоколоночный текст

Чтобы урезать набор применяемых стилевых свойств, можно воспользоваться универсальным свойством columns, оно одновременно устанавливает ширину колонок и их число (пример 2).

Пример 2. Использование columns

.column {
  -webkit-columns: 200px 3;
  -moz-columns: 200px 3;
  columns: 200px 3;
  -webkit-column-gap: 30px;
  -moz-column-gap: 30px;
  column-gap: 30px;
  -webkit-column-rule: 1px solid #ccc;
  -moz-column-rule: 1px solid #ccc;
  column-rule: 1px solid #ccc;
}

Опять же, для работы некоторых браузеров требуется добавить свои префиксы. Расстояние между колонок и параметры разделительной линии, если это требуется, приходится задавать дополнительными свойствами. Если column-gap и column-rule не указаны, линия между колонок не отображается, но некоторое минимальное расстояние между колонок в любом случае сохраняется.

Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.