Многоколоночная верстка. HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов
Многоколоночная верстка
Многоколоночная верстка — это то, чего давно не хватало в Web-дизайне. Отдельные энтузиасты уже давно реализовывали ее с помощью таблиц или контейнеров.
Но теперь у них есть «законные» средства разбить текст на произвольное число колонок, воспользовавшись особыми расширениями CSS.
Расширения CSS — moz-column-count (Firefox) и — webkit-column-count (Web-обозреватели на программном ядре Webkit) задают желаемое число колонок для многоколоночной верстки:
— moz-column-count|-webkit-column-count: <число колонок>|auto
Реальное число колонок, которое выведет Web-обозреватель, может быть другим; например, на Web-странице может не оказаться места для указанного числа колонок или для размещения текста может потребоваться меньше колонок, чем было указано.
Значение auto, судя по всему, отменяет многоколоночную верстку. Пример:
#cmain { — moz-column-count: 2;
— webkit-column-count: 2 }
Здесь мы задаем для контейнера cmain две колонки.
Расширения CSS — moz-column-width (Firefox) и — webkit-column-width (Web-обозреватели на программном ядре Webkit) задают желаемую ширину колонок:
— moz-column-width|-webkit-column-width: <ширина колонок>|auto
Реальная ширина колонок, установленная Web-обозревателем, может быть больше или меньше и будет зависеть от ширины элемента Web-страницы, содержимое которого верстается в несколько колонок.
Значение auto возвращает управление шириной колонок Web-обозревателю. Листинг П4 иллюстрирует пример.
Листинг П4
#cmain { — moz-column-count: 2;
— webkit-column-count: 2;
— moz-column-width: 300px;
— webkit-column-width: 300px }
Задаем для контейнера cmain ширину колонок в 300 пикселов.
Расширения CSS — moz-column-gap (Firefox) и — webkit-column-gap (Web-обозреватели на программном ядре Webkit) задают ширину пространства между колонками:
— moz-column-gap|-webkit-column-gap: <ширина пространства между колонками>|normal
Значение normal задает ширину пространства между колонками по умолчанию. Ее величина зависит от Web-обозревателя.
Листинг П5 иллюстрирует пример.
Листинг П5
#cmain { — moz-column-count: 2;
— moz-column-width: 300px;
— webkit-column-width: 300px;
— moz-column-gap: 5mm;
— webkit-column-gap: 5mm }
В листинге П5 задаем для контейнера cmain ширину пространства между колонками 5 мм.
Расширения CSS — moz-column-rule-width (Firefox) и — webkit-column-rule-width (Web-обозреватели на программном ядре Webkit) задают толщину линий, которыми колонки будут отделяться друг от друга:
— moz-column-rule-width|-webkit-column-rule-width: thin|medium|thick|<толщина линий между колонками>
Здесь доступны те же значения, что и для атрибутов стиля, задающих толщину линий рамки и выделения (см. главу 11
Листинг П6 иллюстрирует пример.
Листинг П6
#cmain { — moz-column-count: 2;
— webkit-column-count: 2;
— moz-column-width: 300px;
— webkit-column-width: 300px;
— moz-column-gap: 5mm;
— webkit-column-gap: 5mm;
— moz-column-rule-width: thin;
— webkit-column-rule-width: thin }
Теперь между колонками в контейнере cmain будут проведены тонкие линии.
Расширения CSS — moz-column-rule-style (Firefox) и — webkit-column-rule-style (Web-обозреватели на программном ядре Webkit) задают стиль линий, которыми колонки будут отделяться друг от друга:
— moz-column-rule-style|-webkit-column-rule-style:
none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset
Здесь доступны те же значения, что и для атрибутов стиля, задающих стиль линий рамки и выделения (см. главу 11).
Листинг П7 иллюстрирует пример.
Листинг П7
#cmain { — moz-column-count: 2;
— webkit-column-count: 2;
— moz-column-width: 300px;
— webkit-column-width: 300px;
— moz-column-gap: 5mm;
— webkit-column-gap: 5mm;
— moz-column-rule-width: thin;
— webkit-column-rule-width: thin;
— moz-column-rule-style: dotted;
— webkit-column-rule-style: dotted }
Теперь между колонками в контейнере cmain будут проведены тонкие точечные линии.
Расширения CSS — moz-column-rule-color (Firefox) и — webkit-column-rule-color
(Web-обозреватели на программном ядре Webkit) задают цвет линий, которыми колонки будут отделяться друг от друга:
— moz-column-rule-color|-webkit-column-rule-color: <цвет линий между колонками>
Листинг П8 иллюстрирует пример.
Листинг П8
#cmain { — moz-column-count: 2;
— webkit-column-count: 2;
— moz-column-width: 300px;
— webkit-column-width: 300px;
— moz-column-gap: 5mm;
— webkit-column-gap: 5mm;
— moz-column-rule-width: thin;
— webkit-column-rule-width: thin;
— moz-column-rule-style: dotted;
— webkit-column-rule-style: dotted;
— moz-column-rule-color: #B1BEC6;
— webkit-column-rule-color: #B1BEC6 }
Теперь между колонками в контейнере cmain будут проведены тонкие точечные линии светло-синего цвета.
Расширения CSS — moz-column-rule (Firefox) и — webkit-column-rule (Web- обозреватели на программном ядре Webkit) задают сразу все параметры линий, которыми колонки будут отделяться друг от друга:
— moz-column-rule|-webkit-column-rule: <толщина> <стиль> <цвет>
Листинг П9 иллюстрирует пример.
Листинг П9
#cmain { — moz-column-count: 2;
— webkit-column-count: 2;
— moz-column-width: 300px;
— webkit-column-width: 300px;
— moz-column-gap: 5mm;
— webkit-column-gap: 5mm;
— moz-column-rule: thin dotted #B1BEC6;
— webkit-column-rule: thin dotted #B1BEC6 }
К сожалению, Opera на данный момент не поддерживает многоколоночную верстку. А жаль…
Данный текст является ознакомительным фрагментом.
Многоколоночная верстка текста в CSS
- Верстка в несколько колонок при помощи свойства float
- Верстка колонок при помощи модели CSS Flexbox
- Верстка колонок при помощи css-свойств группы columns
Здесь мы организовали 2-х колоночную верстку. Прием заключается в том, что мы использовали два блочных элемента (абзаца), которые сделали плавающими при помощи свойства float (см. код таблицы стилей). Но дело в том, что плавающие элементы выпадают из общего потока и поэтому не влияют на высоту родительских элементов, что приводит к наползанию контента друг на друга и проблемам при расчете высот. Чтобы обойти такие неприятные моменты, мы поместили наши блоки, которые служат колонками, в блок-обертку и добавили после них дополнительный пустой блок-подпорку, которому запретили обтекание плавающих вверху элементов.
Внешне будет складываться впечатление, что наши плавающие элементы никуда и не выпадали, а остались в потоке документа. Для колонок внутри блока-обертки мы использовали одинаковую ширину и оформление (хотя ширина может быть разной). Однако, если убрать границы, то можно легко реализовать верстку в две и более колонок.
Кстати, данный прием мы использовали для верстки нашего сайта стишков с черным юмором. Там левая колонка представляет собой боковое меню сайта, а правая служит блоком содержания для самих стишков. При этом в независимости от того, какая колонка выше, складывается впечатление, что колонки одинаковые по высоте. Это достигается фоном их блока обертки, который имеет разные цвета, соответствующие фонам колонок, а также наличием блока-подпорки, который подстраивает высоту блока-обертки под высоту наибольшей из колонок.
Здесь мы организовали 2-х колоночную верстку при помощи флексов. Прием заключается в том, что мы использовали флекс-контейнер, в который и поместили два наших div’а, которые играют роль флекс-элементов со всеми вытекающими из этого последствиями.
Т.к. колонки у нас получились узкие (кстати, установите для наглядности колонкам границу, сняв комментирование в таблице стилей), мы использовали в длинных словах мягке переносы (заодно вспомнили про мнемоники).
Не забудьте заглянуть в учебник и вспомнить материал по флексам. Затем обязательно поэкспериментируйте с данными колонками, изменяя свойства флекс-контейнера и его флекс-элементов.
Согласитесь, круто получилось, добавили всего одну пару строчек в таблицу стилей и даже убрали в исходном коде лишний блок-обертку.
Здесь мы организовали 2-х колоночную верстку при помощи специально предназначенных для этого css-свойств column-count и column-gap. Мы просто указали требуемое количество колонок для нашего абзаца и все. При желании мы могли бы применить к колонкам и некоторое форматирование: установка разделительной линии, порядок заполнения колонок, расстояние между колонками и т.д. Подробнее о многоколоночной верстке смотрите в нашем учебнике здесь.
Основные понятия многоколоночного макета — CSS: каскадные таблицы стилей
Многоколоночный макет, обычно называемый multicol, — это спецификация размещения содержимого в наборе столбцов, очень похожих на столбцы в газете. В этом руководстве объясняется, как работает спецификация, с некоторыми распространенными примерами использования.
Multicol не похож ни на один из других методов компоновки, которые есть в CSS; он разбивает содержимое, включая все элементы-потомки, на столбцы. Это происходит так же, как содержимое фрагментируется на страницы, когда мы работаем с CSS Paged Media, создавая таблицу стилей печати.
Свойства, определенные спецификацией:
-
ширина столбца
-
количество столбцов
-
столбцы
-
цвет правила столбца
-
столбцов в стиле правил
-
ширина правила столбца
-
правило столбца
-
пролет колонны
-
заполнение колонки
-
зазор столбца
При добавлении к элементу column-count
или column-width
элемент становится многоколоночным контейнером или multicol container для краткости. Столбцы являются анонимными блоками и описываются в спецификации как блоки столбцов.
Чтобы создать контейнер с несколькими столбцами, вы должны использовать хотя бы одно из свойств column-*
, а именно column-count
и column-width
.
Указание количества столбцов
Свойство column-count
указывает количество столбцов, в которых вы хотите отображать содержимое. Затем браузер назначит правильный объем пространства для каждого поля столбца, чтобы создать запрошенное количество столбцов.
В приведенном ниже примере мы используем свойство column-count
для создания трех столбцов в элементе .container
. Содержимое, включая дочерние элементы .container
, затем распределяется между тремя столбцами.
В приведенном выше примере содержимое заключено в теги параграфа p
со стилем по умолчанию. Поэтому над каждым абзацем есть поле. Вы можете видеть, как это поле заставляет первую строку текста смещаться вниз. Это связано с тем, что контейнер с несколькими столбцами создает новый контекст блочного форматирования (BFC), что означает, что поля дочерних элементов не сворачиваются ни с каким полем контейнера.
Указание ширины столбцов
Свойство column-width
используется для установки оптимальной ширины для каждого поля столбца. Если вы объявите ширину столбца, браузер определит, сколько столбцов этой ширины поместится в многоцветный контейнер, и равномерно распределит дополнительное пространство между столбцами. Следовательно, ширину столбца следует рассматривать как минимальную ширину, поскольку поля столбцов, вероятно, будут шире из-за дополнительного пространства.
Поле столбца будет уменьшаться до размера, меньшего объявленной ширины столбца, только в случае одного столбца с меньшей доступной шириной, чем значение ширина столбца
.
В приведенном ниже примере мы используем свойство column-width
со значением 200 пикселей. Мы получаем столько столбцов по 200 пикселей, сколько поместится в контейнере, при этом дополнительное пространство делится поровну.
Указание как количества, так и ширины столбцов
Если указать оба свойства для контейнера с несколькими столбцами, то число столбцов
будет действовать как максимальное количество столбцов. Таким образом, поведение, описанное для ширина столбца
, будет происходить до тех пор, пока не будет достигнуто количество столбцов в количество столбцов
. После этого столбцы больше не рисуются, а дополнительное пространство равномерно распределяется между существующими столбцами, даже если есть достаточно места для дополнительных столбцов указанного размера ширины столбца
.
При совместном использовании обоих свойств вы можете получить меньше столбцов, чем указано в значении для количество столбцов
.
В следующем примере мы используем ширина столбца
из 200 пикселей и количество столбцов
из 2. Даже если есть место для более чем двух столбцов, мы получаем два. Однако если места для двух столбцов по 200 пикселей недостаточно, мы получаем один.
Сокращение для свойств столбца
Вы можете использовать сокращение столбцов
, чтобы установить число столбцов
и ширину столбца
. Если вы установите единицу длины, она будет использоваться для ширина столбца
, установите целое число, и оно будет использоваться для столбца-счетчика
. Вы можете установить оба, разделив два значения пробелом.
Этот CSS даст тот же результат, что и в примере 1, столбец-счетчик
установлен на 3.
.container { столбцы: 3; }
Этот CSS даст тот же результат, что и пример 2, с шириной столбца
200 пикселей.
.контейнер { столбцы: 200 пикселей; }
Этот CSS даст тот же результат, что и в примере 3, с обоими количество столбцов
и ширина столбца
набор.
.контейнер { столбцы: 2 200 пикселей; }
В этом руководстве мы изучили основы использования многоколоночного макета. В следующем руководстве мы рассмотрим, насколько мы можем стилизовать сами столбцы.
Последнее изменение: , участниками MDN
Несколько столбцов CSS
❮ Предыдущая Далее ❯
Многоколоночный макет CSS
Многоколоночный макет CSS позволяет легко определять несколько столбцов текст — как в газетах:
Ежедневный эхо-запрос
Lorem ipsum
dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet
dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exercitation ullamcorper sucipit
lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit
esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim
qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta
nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.
Свойства нескольких столбцов CSS
В этой главе вы узнаете о следующих свойствах нескольких столбцов:
-
column-count
-
зазор между столбцами
-
столбцов в стиле правил
-
ширина правила столбца
-
цвет правила столбца
-
правило столбца
-
пролет колонны
-
ширина столбца
Поддержка браузера
Цифры в таблице указывают первую версию браузера, которая полностью поддерживает это свойство.
Собственность | |||||
---|---|---|---|---|---|
количество столбцов | 50,0 | 10,0 | 52,0 | 9,0 | 37,0 |
зазор между столбцами | 50,0 | 10,0 | 52,0 | 9,0 | 37,0 |
правило столбца | 50,0 | 10,0 | 52,0 | 9,0 | 37,0 |
цвет правила столбца | 50,0 | 10,0 | 52,0 | 9,0 | 37,0 |
стиль правил столбца | 50,0 | 10,0 | 52,0 | 9,0 | 37,0 |
ширина правила столбца | 50,0 | 10,0 | 52,0 | 9,0 | 37,0 |
пролет колонны | 50,0 | 10,0 | 71,0 | 9,0 | 37,0 |
ширина столбца | 50,0 | 10,0 | 52,0 | 9,0 | 37,0 |
CSS Create Multiple Columns
Свойство column-count
указывает количество столбцов, которые должен содержать элемент. быть разделены на.
В следующем примере текст в элементе
Пример
div
{
количество столбцов: 3;
}
Попробуйте сами »
CSS Укажите промежуток между столбцами
column-gap 9Свойство 0011 указывает зазор между столбцами.
В следующем примере задается промежуток в 40 пикселей между столбцами:
Пример
div
{
зазор между столбцами: 40 пикселей;
}
Попробуйте сами »
CSS Column Rules
Свойство column-rule-style
определяет стиль правила между
столбцы:
Пример
div
{
стиль правила столбца: сплошной;
}
Попробуйте сами »
Свойство column-rule-width
указывает ширину правила между столбцами:
Пример
div
{
Ширина-правила-столбца: 1px;
}
Попробуйте сами »
Свойство column-rule-color
определяет цвет правила между столбцами:
Пример
div
{
цвет-правила-столбца: голубой;
}
Попробуйте сами »
Свойство column-rule
является сокращенным свойством для установки всех свойств column-rule-* выше.
В следующем примере задается ширина, стиль и цвет правила между столбцами:
Пример
div
{
колонка-правило: 1 пиксель сплошной голубой;
}
Попробуйте сами »
Укажите, сколько столбцов должен занимать элемент
Свойство column-span
указывает, сколько столбцов должен охватывать элемент.
В следующем примере указано, что элемент
должен охватывать все столбцы:
Пример
h3 {
column-span: all;
}
Попробуйте сами »
Задайте ширину столбца
Свойство column-width
указывает рекомендуемую оптимальную ширину столбцов.
В следующем примере показано, что рекомендуемая оптимальная ширина столбцов должно быть 100 пикселей:
Пример
div {
ширина столбца: 100 пикселей;
}
Попробуйте сами »
Свойства нескольких столбцов CSS
В следующей таблице перечислены все свойства с несколькими столбцами:
Свойство | Описание |
---|---|
количество столбцов | Задает количество столбцов, на которые должен быть разделен элемент |
заполнение колонки | Указывает способ заполнения столбцов |
зазор между столбцами | Указывает промежуток между столбцами |
правило столбца | Сокращенное свойство для установки всех свойств правила столбца-* |
цвет правила столбца | Указывает цвет правила между столбцами |
стиль правил столбца | Указывает стиль правила между столбцами |
ширина правила столбца | Указывает ширину линейки между столбцами |
пролет колонны | Указывает, сколько столбцов элемент должен охватывать |
ширина столбца | Указывает рекомендуемую оптимальную ширину столбцов. |
столбцы | Сокращенное свойство для установки ширины и количества столбцов |
❮ Предыдущий Следующий ❯
ВЫБОР ЦВЕТА
Лучшие учебники
Учебное пособие по HTMLУчебное пособие по CSS
Учебное пособие по JavaScript
Учебное пособие
Учебное пособие по SQL
Учебное пособие по Python
Учебник по W3.CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery
Основные ссылки
Справочник по HTMLСправочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.