CSS column-span — елемент на всі колонки
Властивість column-span визначає, як повинен відображатися елемент в багатоколонковому тексті - займати ширину всіх колонок або тільки одну з них.
Цю властивість зазвичай застосовують для заголовків тексту або зображень, які не повинні розбиватися на колонки.
Елемент, який охоплює декілька стовпчиків, називається "елемент, що охоплює".
автор: Svitlana
Загальний опис
автор: NagarD
Синтаксис
column-span: none|all|initial|inherit;
Властивість column-span може отримувати 4 значень:
-
none -
Елемент займає ширину однієї колонки. Без задання
автор: Svitlana -
all -
Елемент займає все колонки.
автор: Svitlana -
initial -
Встановлює цю властивість в значення без задання
автор: Svitlana -
inherit -
Успадкує значення властивості від свого батьківського елемента
автор: Svitlana
| Значення без задання: | none |
|---|---|
| Наслідує: | Ні |
| Анімується: | Ні |
| JavaScript синтаксис: | object.style.columnSpan="all" |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 50 | 71 | 9 | 37 | 12 | 10 |
| Переглядач | ||||
|---|---|---|---|---|
| 50 | 50 | 79 | 9 |
Приклади
+ запропонувати свій приклад у пісочниці
Заголовок із column-span: all розтягується через усі колонки, розриваючи потік: текст до нього — у колонках, і після нього — знову в колонках.
HTML
<div class="cols">
<p>Багатоколонкова верстка ділить текст автоматично: браузер сам вирішує, де перервати рядок і почати нову колонку. Що довший текст, то краще видно поділ — тому цей абзац навмисно багатослівний і ще й трохи повторюється, щоб колонкам було чим заповнитися.</p>
<h2>Заголовок через усі колонки</h2>
<p>Багатоколонкова верстка ділить текст автоматично: браузер сам вирішує, де перервати рядок і почати нову колонку. Що довший текст, то краще видно поділ — тому цей абзац навмисно багатослівний і ще й трохи повторюється, щоб колонкам було чим заповнитися.</p>
</div>
CSS
.cols {
column-count: 3;
}
h2 {
column-span: all;
background: #eef6ff;
}
Приклад використання
HTML
<span>Цей заголовок, так само як й інший вміст контейнеру ділиться на колонки.</span>
<div class="multicol">
<h4>Це просто заголовок.</h4>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Possimus cumque porro veritatis, alias laudantium perferendis facilis corrupti. Maxime, quia vel?</p>
</div>
<span>А тут, за допомогою властивості <code>column-span</code>, ми вказали, щоб заголовок не ділився на колонки.</span>
<div class="multicol rule">
<h4>Це просто заголовок.</h4>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint facilis vero quisquam delectus neque quia modi quae voluptatem magnam sit!</p>
</div>
CSS
body {
font-family: sans-serif;
line-height: 1.45;
}
h4 {
margin-top: 0;
}
.multicol {
background: #eee;
padding: 10px;
margin-bottom: 16px;
/* Safari and Chrome */
-webkit-column-count: 3;
-webkit-column-rule: 2px dotted gold;
/* Firefox */
-moz-column-count: 3;
-moz-column-rule: 2px dotted gold;
/* CSS3 */
column-count: 3;
column-rule: 2px dotted gold;
}
.multicol.rule h4 {
column-span: all;
}
Значення у дії
HTML
<p>Вибери потрібне значення для <code>column-span</code>:</p>
<strong>Ця властивість може не підтримуватися Вашим браузером!</strong><br><br>
<div class="inputs">
<input id="none" checked name="column-span" type="radio"/>
<label for="none">none</label>
<message for="none">Елемент займає ширину однієї колонки. За замовчуванням</message>
<input id="all" name="column-span" type="radio"/>
<label for="all">all</label>
<message for="all">Елемент займає все колонки.</message>
</div>
<p id="message">Елемент займає ширину однієї колонки. За замовчуванням</p>
<hr>
<div id="block">
<h4 id="span">Це просто заголовок. Дуже довгий, довгий, довгий заголовок.</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur.</p>
</div>
CSS
* {
box-sizing: border-box;
padding: 0;
}
body {
font-family: monospace;
font-size: 17px;
line-height: 1.5;
color: #222;
}
p, h4 {
margin-top: 0;
}
#form {
padding: 8px 16px;
font-size: 19px;
}
#block {
background: #eee;
padding: 10px;
margin-bottom: 16px;
/* Safari and Chrome */
-webkit-column-count: 3;
-webkit-column-rule: 2px dotted gold;
/* Firefox */
-moz-column-count: 3;
-moz-column-rule: 2px dotted gold;
/* CSS3 */
column-count: 3;
column-rule: 2px dotted gold;
}
#text {
height: 60px;
background-color: #eee;
padding: 16px 0;
}
message {
display: none;
}
JS
const message = document.querySelector('#message');
document.querySelectorAll('.inputs input').forEach((el) => el.addEventListener('change', function () {
var messageText = document.querySelector("message[for='" + this.id + "']");
message.textContent = messageText?.textContent ?? '';
document.querySelectorAll('#span').forEach((n) => n.style.setProperty('column-span', this.id));
}));
Три однакові блоки по три колонки з лінією між ними. У першому заголовок має column-span: all — він лягає впоперек і ділить текст на дві незалежні пари наборів колонок. У другому написано column-span: 2 — недійсне значення, заголовок лишився в колонці. У третьому до all додано float: left — і розтягування зникло.
HTML
<h4>1. column-span: all — заголовок розриває колонки</h4>
<div class="mc">
<p>Перший абзац тексту, який браузер розкладає на три колонки над заголовком.
Слова тут потрібні лише для об'єму, тож нехай їх буде вдосталь для двох
рядків у кожній колонці.</p>
<h5 class="span-all">Заголовок упоперек</h5>
<p>Другий абзац лягає під заголовком і знову розкладається на три колонки —
уже незалежно від того, що було вгорі.</p>
</div>
<h4>2. column-span: 2 — недійсне значення, нічого не відбувається</h4>
<div class="mc">
<p>Перший абзац тексту, який браузер розкладає на три колонки над заголовком.
Слова тут потрібні лише для об'єму, тож нехай їх буде вдосталь.</p>
<h5 class="span-two">Заголовок у колонці</h5>
<p>Другий абзац просто продовжує ту саму колонку.</p>
</div>
<h4>3. column-span: all разом із float: left — розтягування скасовано</h4>
<div class="mc">
<p>Перший абзац тексту, який браузер розкладає на три колонки над заголовком.
Слова тут потрібні лише для об'єму, тож нехай їх буде вдосталь.</p>
<h5 class="span-float">Заголовок з обтіканням</h5>
<p>Другий абзац просто продовжує ту саму колонку.</p>
</div>
CSS
h4 {
margin: 18px 0 6px;
font: 600 .95em/1.4 system-ui, sans-serif;
color: #5a6472;
}
.mc {
column-count: 3;
column-gap: 16px;
column-rule: 1px solid #b9c6d8;
padding: 8px;
border: 1px solid #b9c6d8;
font: 13px/1.5 system-ui, sans-serif;
}
.mc p {
margin: 0 0 8px;
}
.mc h5 {
margin: 0 0 8px;
padding: 4px 6px;
background: #f2b134;
font-size: 14px;
}
.span-all {
column-span: all;
}
.span-two {
column-span: 2;
}
.span-float {
column-span: all;
float: left;
width: 100%;
}
Коментарі
Коментарів ще немає — будьте першим!