orphans в CSS — мінімум рядків унизу сторінки при друку
Властивість orphans визначає мінімальну кількість рядків у контейнері, які потрібно залишити у фрагменті перед перервою фрагментації (існує подібна властивість widows, котра діє майже так само, лише вказує кількість рядків, які потрібні залишити у фрагменті після перерви фрагментації).

Загальний термін для переносу вмісту в контейнерах - фрагментація. Сторінки, стовпці та регіони називаються контейнерами фрагментації. Їх також називають фрагментарними.
Кожна фрагментація перериває завершення макета фрагментованої коробки в поточному фрагментарному ланцюзі і призводить до того, що залишковий вміст буде розміщено у наступному фрагменті, у деяких випадках викликаючи створення нового фрагментарного матеріалу, який містить знову ж таки вкладений вміст.
Властивість orphans була спочатку введена у CSS2, щоб допомогти авторам контролювати розриви рядків у друкованих носіях. CSS3 розширює використання цієї властивості для вирішення інших типів функцій макета, таких як макети з декількома стовпцями та регіонами CSS (де вміст з одного або декількох елементів може розміщуватися на одному або декількох рядках).
Загальний опис
автор: NagarD
- Нотатка
-
Якщо значення властивості конфліктує із властивістю
автор: Svitlanawidows, тоwidowsмає пріоритет і враховується замістьorphans.
Синтаксис
orphans: <число>;
Властивість orphans може отримувати єдине значення:
| Значення без задання: | 2 |
|---|---|
| Наслідує: | Так |
| Анімується: | Ні |
| JavaScript синтаксис: | object.style.orphans = 5; |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 25 | — | 1.3 | 9.2 | 12 | 8 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 25 | — | 1 |
Приклади
+ запропонувати свій приклад у пісочниці
orphans: 3 забороняє лишати наприкінці колонки чи сторінки менше трьох рядків абзацу (а widows — на початку наступної). Ефект найпомітніший у друці й багатоколонковій верстці: абзац або лишає внизу три рядки, або переїздить цілком.
HTML
<div class="cols">
<p>Перший абзац просто заповнює місце в колонці, щоб наступному не вистачило простору.</p>
<p>Другий абзац достатньо довгий, щоб розірватися між колонками: без orphans унизу міг би лишитися один самотній рядок, а з orphans: 3 — щонайменше три.</p>
</div>
CSS
.cols {
columns: 2;
height: 150px;
column-fill: auto;
}
p {
orphans: 3;
widows: 3;
}
Значення у дії
HTML
<p>Вибери потрібне значення для <code>orphans</code>:</p>
<p><strong>Зверніть увагу на те, що ця властивість підтримується далеко не всіма браузерами!</strong></p>
<input type="number" id="val" value="4" min="0">
<hr>
<div id="block">
<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. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
CSS
* {
box-sizing: border-box;
padding: 0;
}
body {
font-family: monospace;
font-size: 17px;
line-height: 1.5;
color: #222;
}
p {
margin-top: 0;
}
#block {
padding: 10px;
columns: 2;
background: gold;
orphans: 4;
}
JS
document.querySelectorAll('#val').forEach((el) => el.addEventListener('change', function () {
document.querySelectorAll('#block').forEach((n) => n.style.setProperty('orphans', this.value));
}));
Три однакові блоки на дві колонки з column-fill: auto. Червоний абзац завжди опиняється на межі колонок: із типовим значенням 2 він переїжджає цілком, із orphans: 1 лишає внизу один рядок, а з orphans: 10 виштовхується навіть із запасом місця. ⚠️ У Firefox усі три виглядатимуть однаково — там властивості немає.
HTML
<p class="cap">1. Типове значення (orphans: 2) — абзац переїжджає цілком:</p>
<div class="mc">
<p class="pre">рядок A1<br>рядок A2<br>рядок A3<br>рядок A4</p>
<p class="hot">рядок B1<br>рядок B2<br>рядок B3</p>
</div>
<p class="cap">2. orphans: 1 — один рядок дозволено лишити внизу:</p>
<div class="mc">
<p class="pre">рядок A1<br>рядок A2<br>рядок A3<br>рядок A4</p>
<p class="hot one">рядок B1<br>рядок B2<br>рядок B3</p>
</div>
<p class="cap">3. orphans: 10 — місця бракує завжди, абзац їде далі:</p>
<div class="mc">
<p class="pre">рядок A1<br>рядок A2</p>
<p class="hot ten">рядок B1<br>рядок B2<br>рядок B3<br>рядок B4<br>рядок B5</p>
</div>
CSS
.cap {
margin: 18px 0 6px;
font: 600 .9em/1.4 system-ui, sans-serif;
color: #5a6472;
}
.mc {
column-count: 2;
column-gap: 20px;
column-fill: auto;
column-rule: 1px solid #b9c6d8;
width: 420px;
height: 100px;
border: 1px solid #b9c6d8;
font: 13px/20px system-ui, sans-serif;
}
.mc p {
margin: 0;
}
.pre {
background: #eef1f5;
}
.hot {
background: #c0392b;
color: #fff;
}
.one {
orphans: 1;
}
.ten {
orphans: 10;
}
Приклад використання
HTML
<span><strong>Звичайний багатоколонковий текст. Всі властивості мають значення за замовчуванням.</strong></span>
<div class="multicol">
<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatem non magnam, quo quae doloremque natus neque aspernatur ipsum maiores nihil eveniet consequuntur aut repellendus, maxime cumque qui. Odit, praesentium qui.</p>
</div>
<span><strong>А тут ми встановили для властивості <code>orphans</code> значення 4. Тобто наступний фрагмент мусить містити мінімум 4 рядки тексту.</strong></span>
<div class="multicol rule">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis repellendus inventore modi, ad adipisci nobis nulla accusamus consequuntur beatae necessitatibus tempora recusandae consectetur exercitationem vero et ipsam commodi optio dolore! Lorem ipsum dolor sit amet consectetur adipisicing elit. Debitis labore magnam reprehenderit quidem itaque incidunt velit alias, repellendus aliquid enim!</p>
</div>
CSS
body {
font-family: sans-serif;
line-height: 1.45;
}
p {
margin-top: 0;
}
.multicol {
margin-top: 20px;
padding: 10px;
columns: 2;
background: gold;
margin-bottom: 16px;
}
.multicol.rule {
orphans: 4;
}
Коментарі
Коментарів ще немає — будьте першим!