box-decoration-break в CSS — оформлення на розриві рядка


автор: Svitlana

Загальний опис

автор: NagarD

Синтаксис

box-decoration-break: slice | clone

Властивість box-decoration-break може отримувати 5 значень:

slice

Блок буде “нарізаний” на фрагменти, які не будуть підтримувати поля, межі, тіні, заокруглення і фонові зображення. Також фонове зображення застосовується лиш один раз, а кожний із фрагментів показуватиме тільки частину спільного фону.

автор: Svitlana

clone

Фрагменти підтримують всі вище названі властивості. Також фонове зображення застосовується для кожного із фрагментів окремо.

автор: Svitlana

initial

Значення властивості буде встановлено у значення без задання.

автор: Svitlana

inherit

Значення властивості буде успадковано від батьківського елементу.

автор: Svitlana

unset

Працює як initial або inherit, в залежності від того, чи може властивість наслідувати значення від батьківського елементу.

автор: Svitlana

Значення без задання: slice
Наслідує: Ні
Анімується: Так
JavaScript синтаксис: object.style.boxDecorationBreak

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
130 32 7* 115 130 —
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
130 130 32 7*

Приклади

+ запропонувати свій приклад у пісочниці

Обидва span розірвані переносом рядка. Зі slice (типово) рамка й заокруглення малюються так, ніби елемент цілий — місця розриву «голі»; з clone кожен фрагмент дістає повне власне оформлення.

HTML

<p><span class="slice">slice: оформлення розрізане<br>разом з елементом</span></p>
<p><span class="clone">clone: кожен фрагмент<br>із власною рамкою</span></p>

CSS

span {
    background: gold;
    border: 2px solid #0172ad;
    border-radius: 8px;
    padding: 2px 8px;
}

.slice { box-decoration-break: slice; }
.clone { box-decoration-break: clone; }
автор: Svitlana

Приклад роботи властивості box-decoration-break

HTML

<div class="info">
	<p>За допомогою властивості <code>box-decoration-break</code> ми можемо стилізувати окремі фрагменти, утворені внаслідок, наприклад, розриву сторінки.</p>
	<p>Нижче розташовані два ідентичні блоки, але фрагменти останнього підтримують всі властивості цілого блоку.</p>
</div>

<div class="wrapper">
	<div class="block"><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.</span></div>
	<div class="block clone"><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.</span></div>
</div>

CSS

* {
	box-sizing: border-box;
}

body {
	font-family: monospace;
	font-size: 17px;
  line-height: 1.45;
}

.info {
	padding: 16px;
}

code {
	font-weight: 700;
	color: #444;
	border-bottom: 2px solid #666;
}

.wrapper {
	display: flex;
	justify-content: space-around;
}

.block {
	width: 40%;
	height: 150px;
}

.block span {
	background-color: gold;
	color: #222;
	font-weight: 700;
	padding: 6px 12px;
  line-height: 1.8;
}

.block.clone span {
  -webkit-box-decoration-break: clone;
	box-decoration-break: clone;
}
автор: Svitlana

Динамічний приклад

HTML

<p>У цьому прикладі, Ви можете змінювати значення для властивості <strong>box-decoration-break</strong>.</p>

<p>Вона стилізує окремі фрагменти елементів, утворені внаслідок, наприклад, розриву сторінки.</p>

<div class="inputs">
  <input id="slice" checked name="box-decoration-break" type="radio"/>
  <label for="slice">slice</label>
  <message for="slice">Блок буде “нарізаний” на фрагменти, які не будуть підтримувати поля, межі, тіні, заокруглення і фонові зображення.</message>
  
  <input id="clone" name="box-decoration-break" type="radio"/>
  <label for="clone">clone</label>
  <message for="clone">Фрагменти підтримують всі властивості, які були задані для цілого елементу.</message>
</div>
<div class="message-box">
<p id="message">Блок буде “нарізаний” на фрагменти, які не будуть підтримувати поля, межі, тіні, заокруглення і фонові зображення.</p>
</div>

<p id="block">Це текст. <br> Просто текст для прикладу.</p>

CSS

* {
  box-sizing: border-box;
  padding: 0;
}

body {
  font-family: sans-serif;
  line-height: 1.45;
}

#block {
  font-size: 1.75em; 
  padding: 6px 12px;
  background-color: gold;
  display: inline;
}

message {
  display: none;
}

.message-box {
  min-height: 75px;
  margin-bottom: 24px;
}

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('#block').forEach((n) => n.style.setProperty('box-decoration-break', this.id));

}));
автор: Svitlana

Три пари. Угорі — багаторядковий підсвічений текст: ліворуч slice (градієнт тече наскрізь, у розриву немає меж і заокруглень), праворуч clone (кожен рядок — окрема «таблетка» з власним градієнтом). Посередині — те саме з тінню замість межі. Унизу — блок, розірваний між колонками: при slice у нього немає нижньої межі в першій колонці, при clone вона на місці.

HTML

<p class="cap">Вбудований елемент через кілька рядків:</p>
<div class="pair">
    <div class="col">
        <span class="mark">довгий підсвічений напис, якому не вистачає одного рядка, тож він переноситься</span>
        <p class="tag">slice — типове</p>
    </div>
    <div class="col">
        <span class="mark clone">довгий підсвічений напис, якому не вистачає одного рядка, тож він переноситься</span>
        <p class="tag">clone</p>
    </div>
</div>

<p class="cap">Те саме з тінню:</p>
<div class="pair">
    <div class="col">
        <span class="sh">напис із тінню, що теж не вміщується в один рядок і переноситься</span>
        <p class="tag">slice — тінь обводить уявну цілу коробку</p>
    </div>
    <div class="col">
        <span class="sh clone">напис із тінню, що теж не вміщується в один рядок і переноситься</span>
        <p class="tag">clone — тінь у кожного шматка</p>
    </div>
</div>

<p class="cap">Блок, розірваний між колонками:</p>
<div class="pair">
    <div class="col">
        <div class="mc"><p class="blk">блок їде через дві колонки: слово слово слово слово слово слово слово слово</p></div>
        <p class="tag">slice — нижньої межі в першій колонці немає</p>
    </div>
    <div class="col">
        <div class="mc"><p class="blk clone">блок їде через дві колонки: слово слово слово слово слово слово слово слово</p></div>
        <p class="tag">clone — межа замкнена в обох</p>
    </div>
</div>

CSS

.cap {
    margin: 20px 0 8px;
    font: 600 .9em/1.4 system-ui, sans-serif;
    color: #5a6472;
}

.pair {
    display: flex;
    flex-wrap: wrap;
    gap: 26px;
}

.col {
    width: 260px;
}

.tag {
    margin: 10px 0 0;
    font: .8em/1.35 system-ui, sans-serif;
    color: #5a6472;
}

.mark {
    background: linear-gradient(90deg, #c0392b, #f2b134);
    color: #fff;
    padding: 3px 12px;
    border: 3px solid #2f6fd0;
    border-radius: 12px;
    font: 15px/30px system-ui, sans-serif;
}

.sh {
    background: #eef1f5;
    padding: 3px 10px;
    box-shadow: 0 0 0 4px #c0392b;
    font: 15px/34px system-ui, sans-serif;
}

.clone {
    box-decoration-break: clone;
}

.mc {
    column-count: 2;
    column-gap: 16px;
    column-fill: auto;
    width: 250px;
    height: 74px;
    font: 12px/18px system-ui, sans-serif;
}

.blk {
    margin: 0;
    padding: 4px 8px;
    background: #f2b134;
    border: 3px solid #2f6fd0;
    border-radius: 10px;
}
автор: NagarD

Приклад роботи властивості box-decoration-break

HTML

<span class="example example0">Приклад<br>роботи<br>без застосування властивості</span>

<br><br><hr><br>

<span class="example example1">Приклад<br>роботи<br>властивості</span>

CSS

.example { 
  
  background: linear-gradient(to bottom right, yellow, green);
  box-shadow:
    8px 8px 10px 0px deeppink, 
    -5px -5px 5px 0px blue, 
    5px 5px 15px 0px yellow;
  
  padding: 0em 1em;
  border-radius: 16px;
  border-style: solid;
  margin-left: 10px;
  font: 24px sans-serif;
  line-height: 2;
  
}

.example1 {
  -webkit-box-decoration-break: clone;
  -o-box-decoration-break: clone;
  box-decoration-break: clone; 
}
автор: Svitlana

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід