Многоколоночная верстка. 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;

— webkit-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 указывает количество столбцов, которые должен содержать элемент. быть разделены на.

В следующем примере текст в элементе

будет разделен на 3 части. столбцы: 

Пример

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.
Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *