Чтение очень длинных строк текста может быть проблематичным для некоторых людей. Им придется больше сосредоточиться на том, чтобы не пропустить строку вместо самого текста. Эта проблема легко решается с помощью нескольких столбцов для размещения содержимого. Несколько столбцов вездесущи в печатных СМИ. Функции CSS Multi-column Layout Module позволяют нам воссоздать тот же самый эффект нескольких столбцов на веб-сайтах.
Одна вещь, которая затрудняет использование нескольких столбцов при разработке веб-страниц, — это невозможность контролировать размер документов. В этом уроке я научу вас создавать адаптивные многостолбцовые макеты, которые хорошо смотрятся на экранах разных размеров. Мы начнем с основ, а затем перейдем к более сложным концепциям.
Поддержка браузера
Браузерная поддержка многостолбцовой разметки отлично подходит, если вы готовы использовать префиксы. Эта функция поддерживается 95,32% браузеров по всему миру на основе статистики от Могу ли я использовать . Некоторые браузеры, такие как IE10 +, Edge и Opera Mini, полностью поддерживают макеты с несколькими столбцами. Другим, таким как Firefox и Chrome, нужны префиксы.
Доступен более старый полифильм, который вы пробуете, если вам требуется поддержка старых браузеров (обычно это означает IE9 и ниже). Конечно, если браузер не поддерживает функции нескольких столбцов, макет изящно ухудшается до макета одного столбца. Так что в этом случае полифил не может быть лучшим вариантом.
Модуль многостолбцовой разметки CSS обладает рядом различных свойств. В следующих разделах я расскажу обо всех по одному.
Количество столбцов и ширина столбцов
Свойство column-count
Вы можете установить его на auto
Если установлено значение auto
column-width
Если задано положительное число, все столбцы имеют одинаковую ширину.
Свойство column-width
Это не должно строго соблюдаться. Например, столбцы могут быть уже, если недостаточно свободного места. Это свойство также может быть установлено как для auto
Если установлено значение auto, ширина будет определяться свойством column-count
Доступное пространство будет разделено между всеми столбцами одинаково.
В качестве альтернативы, эти два значения могут быть установлены одновременно, используя свойство сокращенных columns
Синтаксис для свойства columns
.example {
columns: <'column-width'> || <'column-count'>
}
Ниже приведены несколько примеров использования этого свойства с интерпретацией в комментарии рядом с каждым примером:
.example {
columns: 10em; /* column-width: 10em / column-count: auto */
columns: 4; /* column-width: auto / column-count: 4 */
columns: 4 auto; /* column-width: auto / column-count: 4 */
columns: auto 10em; /* column-count: auto / column-width: 4 */
columns: auto; /* column-count: auto / column-width: auto */
columns: auto auto; /* column-count: auto / column-width: auto */
}
Как видите, определение первого columns
В основном, если целому числу не назначено ни одного элемента, оно анализируется как число column-count
Вот демонстрация CodePen, чтобы продемонстрировать функции, которые обсуждались до сих пор
Если вы измените размер окна, вы заметите несколько вещей:
- Свойство
column-count
Единственное, что меняется — это ширина столбцов. - Свойство
column-width
Количество столбцов настраивается таким образом, чтобы ширина столбца превышала указанное значение. Он также может отрегулировать ширину всех столбцов до меньшего значения, если места недостаточно. - Свойство
columns
column-count
Он продолжает регулировать ширину таким образом, чтобы числоcolumn-count
column-width
Разрыв столбца и правило столбца
Свойство column-gap
Вы можете установить его в normal
Это может быть ноль, но не отрицательный. Когда вы устанавливаете его в normal
Свойство column-rule
Это похоже на использование свойств border-left
border-right
Это свойство соответствует синтаксису:
.example {
column-rule: <'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>
}
Для column-rule-width
3px
thin
medium
thick
column-rule-style
dashed
dotted
solid
border-style
column-rule-style
column-rule-color
Вот демонстрация CodePen с этими свойствами, используемыми вместе
Заполнение столбца и интервал столбца
Свойство column-fill
Это свойство может быть установлено на auto
balance
Когда установлено значение auto
Использование balance
Стоит помнить одну вещь: если вы устанавливаете фиксированную высоту для элемента с колоннами, Firefox автоматически балансирует содержимое. Однако другие браузеры начинают заполнять столбцы последовательно.
Свойство column-span
У него есть два возможных значения: all
none
Когда установлено значение all
Это свойство не поддерживается в Firefox .
Вот демонстрация CodePen, которая «охватывает» элемент блочной цитаты по всем столбцам
В Firefox цитата заканчивается в среднем столбце, что может быть приемлемым отступлением.
Создание адаптивных макетов с несколькими столбцами
Теперь, когда вы в курсе различных свойств и возможных значений, давайте сосредоточимся на том, чтобы сделать наш макет отзывчивым и удобным для пользователя.
И column-count
column-width
В то время как column-count
Аналогично, column-width
Чтобы ваш макет выглядел хорошо на всех размерах экрана, вы должны указать column-count
column-width
Таким образом, вы можете контролировать ширину и количество столбцов. Тем не менее, вам может потребоваться исправить некоторые проблемы, которые мы обсудим далее.
Исправление горизонтальной прокрутки
Если вы укажете фиксированную высоту для ваших столбцов, сужение области просмотра приведет к горизонтальной полосе прокрутки. Поскольку контент не может расширяться по вертикали, он будет расти по горизонтали. Чтобы исправить это, вы можете изменить размер своего браузера, чтобы узнать ширину, когда появляются горизонтальные полосы прокрутки. Затем вы используете медиазапросы, чтобы auto
Вот код для этого:
.responsive-height {
height: 250px;
}
@media (max-width: 1040px) {
.responsive-height {
height: auto;
}
}
Эта демонстрация CodePen показывает и проблему, и возможное решение
Измените размер окна, чтобы увидеть, как отвечают оба примера.
Исправление очень длинных столбцов
Если ваши столбцы слишком длинные, пользователям будет неудобно продолжать прокручивать вверх и вниз, чтобы прочитать весь контент. Когда высота столбцов становится больше, чем высота самого окна просмотра, рекомендуется избавиться от нескольких столбцов. Это может быть достигнуто снова с помощью медиа-запросов:
@media (min-width: 800px) {
.long-columns {
columns: 3 200px;
}
}
В этом случае я использую несколько столбцов, только когда ширина области просмотра такова, что пользователям больше не нужно прокручивать вверх и вниз.
Посмотреть демо с несколькими столбцами и медиа-запросами
Вывод
Я надеюсь, что это введение в модуль многоколоночной разметки CSS познакомило вас с этой функцией. Эти свойства могут быть хорошим дополнением к вашей панели инструментов адаптивного дизайна, и если вам все еще требуется поддержка старых браузеров, несколько столбцов обычно изящно уменьшаются до одного столбца.