border-image-width в CSS — товщина рамки із зображення
Властивість border-image-width визначає ширину зображення заданого для межі елементу, встановлюючи внутрішні відступи від країв меж. Якщо значення border-image-width більше, ніж значення border-width, тоді зображення виходить за краї полів або вмісту елементу.

border-image-width використовується разом з такими властивостями як border-image-source, border-image-repeat, border-image-outset та border-image-slice для стилізування меж елементів.
Значення без задання - 1, тому, якщо значення не встановлено, але для елемента є визначення кордону або ширини кордону, зображення буде намальовано з такою шириною.
Загальний опис
автор: NagarD
- Порада
-
Щоб зекономити час, рекомендується використовувати
автор: Svitlanaborder-imageдля встановлення всіх властивостей для зображення межі одним правилом. - Порада
-
Зверніть увагу,
автор: Svitlanaborder-imageвикористовується замістьborder-style, який буде показаний тільки у випадку, якщо сталася помилка при завантаженні зображення, або дляborder-imageвстановлене значення none. - Нотатка
-
Чотири значения
автор: Svitlanaborder-image-widthвказують на зміщення, які використовуються для розділення зображення границі на девять частин. Вони представляють внутрішні відстані від верхньої, правої, нижньої та лівої сторони області зображення. Якщо четверте значення пропущено, воно встановлюється рівним другому. Якщо третя значення також пропущено, воно встановлюється рівним першому. Якщо и друге значение не вказано, тоді воно береться рівним первошу. Негативні значення не припустимі для будь-яких значеньborder-image-width.
Синтаксис
border-image-width: number|%|length|auto|initial|inherit;
Властивість border-image-width може отримувати 6 значень:
-
number -
Ширина кордону в пікселях.
автор: Svitlana -
% -
Ширина у відсотках по відношенню до висоти та ширині зображення для кордону.
автор: Svitlana -
length -
Ширина у пікселях.
автор: Svitlana -
auto -
Ширина відповідно ширині нарізаних зображень.
автор: Svitlana -
initial -
Встановлює властивість у значення без задання
автор: Svitlana -
inherit -
Вказує на спадковість властивості від свого батьківського елемента.
автор: Svitlana
| Значення без задання: | 1 |
|---|---|
| Наслідує: | Ні |
| Анімується: | Ні |
| JavaScript синтаксис: | object.style.borderImageWidth="20px" |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 16 | 13 | 6 | 15 | 12 | 11 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 14 | 6 |
Приклади
+ запропонувати свій приклад у пісочниці
Ширина намальованої рамки-зображення не зобов'язана збігатися з шириною бордера: у другому блоці вона вдвічі більша й насувається на вміст.
HTML
<div class="box">border-image-width: 12px</div>
<div class="box wide">border-image-width: 24px</div>
CSS
.box {
margin-bottom: 12px;
padding: 16px;
border: 12px solid transparent;
border-image-source: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cg fill='%230172ad'%3E%3Cpath d='M15 0l15 15-15 15L0 15z'/%3E%3Cpath d='M45 0l15 15-15 15-15-15z'/%3E%3Cpath d='M75 0l15 15-15 15-15-15z'/%3E%3Cpath d='M15 30l15 15-15 15L0 45z'/%3E%3Cpath d='M75 30l15 15-15 15-15-15z'/%3E%3Cpath d='M15 60l15 15-15 15L0 75z'/%3E%3Cpath d='M45 60l15 15-15 15-15-15z'/%3E%3Cpath d='M75 60l15 15-15 15-15-15z'/%3E%3C/g%3E%3C/svg%3E");
border-image-slice: 30;
border-image-repeat: round;
border-image-width: 12px;
}
.wide {
border-image-width: 24px;
}
Вісім однакових коробок із тією самою картинкою межі й тією самою межею завтовшки 10px. Міняється лише border-image-width: типова одиниця, множники, довжина, відсоток, auto, нуль (межа зникає зовсім — видно тло) і випадок із нульовою товщиною межі, де картинка все одно малюється. Пунктирна рамка навколо кожної коробки показує, що розміри в усіх однакові.
HTML
<div class="row">
<figure><div class="b w1"></div><figcaption>1 — типове (10px)</figcaption></figure>
<figure><div class="b w2"></div><figcaption>2 — удвічі за межу</figcaption></figure>
<figure><div class="b w3"></div><figcaption>3 — утричі, лізе на поле</figcaption></figure>
<figure><div class="b wpx"></div><figcaption>30px — довжина</figcaption></figure>
<figure><div class="b wpc"></div><figcaption>50% — від ділянки межі</figcaption></figure>
<figure><div class="b wauto"></div><figcaption>auto — розмір шматка</figcaption></figure>
<figure><div class="b w0"></div><figcaption>0 — межі немає зовсім</figcaption></figure>
<figure><div class="b nobw"></div><figcaption>border-width: 0 — картинка є</figcaption></figure>
</div>
<p class="cap">Пастка скорочення: у правій коробці після картинки написано
<span class="mono">border: 10px solid #8a94a6</span> — і картинка зникла:</p>
<div class="row">
<figure><div class="b w2"></div><figcaption>картинка на місці</figcaption></figure>
<figure><div class="b w2 killed"></div><figcaption>скорочення все скинуло</figcaption></figure>
</div>
CSS
.row {
display: flex;
flex-wrap: wrap;
gap: 18px;
}
figure {
margin: 0;
}
figcaption {
margin-top: 6px;
max-width: 140px;
font: .8em/1.35 system-ui, sans-serif;
color: #5a6472;
}
.b {
width: 120px;
height: 60px;
background: #eef1f5;
outline: 1px dashed #b9c6d8;
border-width: 10px;
border-style: solid;
border-color: #8a94a6;
border-image-source: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Crect width='90' height='90' fill='%23f2b134'/%3E%3Crect x='30' y='30' width='30' height='30' fill='%232f6fd0'/%3E%3C/svg%3E");
border-image-slice: 30;
border-image-repeat: stretch;
}
.w1 { border-image-width: 1; }
.w2 { border-image-width: 2; }
.w3 { border-image-width: 3; }
.wpx { border-image-width: 30px; }
.wpc { border-image-width: 50%; }
.wauto { border-image-width: auto; }
.w0 { border-image-width: 0; }
.nobw {
border-width: 0;
border-image-width: 20px;
}
.killed {
border: 10px solid #8a94a6;
}
.cap {
margin: 22px 0 8px;
max-width: 480px;
font: 600 .9em/1.5 system-ui, sans-serif;
color: #5a6472;
}
.mono {
font-family: ui-monospace, monospace;
}
HTML
<div class="box">
<p>У цьому прикладі, Ви можете змінювати значення для властивості <strong>border-image-width</strong>.</p>
<p>Вона встановлює, ширину зображення кордону елемента. В цьому прикладі, Ви можете визначити ширину, для кожної зі сторін окремо (в такому порядку: верхня сторона, права, нижня, ліва).</p>
<strong>border-image-width: </strong>
<input type="number" class="input" id="num1" value="24">px
<input type="number" class="input" id="num2" value="24">px
<input type="number" class="input" id="num3" value="24">px
<input type="number" class="input" id="num4" value="24">px
<strong>;</strong>
</div>
CSS
* {
box-sizing: border-box;
}
body {
font-family: monospace;
font-size: 16px;
line-height: 1.45;
height: 100vh;
padding: 16px;
}
.box {
background-color: #f7f7f7;
padding: 16px;
border: 24px solid #444;
border-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 3 3'%3E%3Crect width='3' height='3' fill='%232a9d8f'/%3E%3Crect x='1' y='1' width='1' height='1' fill='%23e9c46a'/%3E%3Crect width='1' height='1' fill='%23e63946'/%3E%3Crect x='2' width='1' height='1' fill='%23e63946'/%3E%3Crect y='2' width='1' height='1' fill='%23e63946'/%3E%3Crect x='2' y='2' width='1' height='1' fill='%23e63946'/%3E%3C/svg%3E") 24 round round;
border-image-width: 24px 24px 24px 24px;
}
.input {
margin-bottom: 36px;
width: 75px;
}
#select {
position: relative;
top: -4px;
width: 100px;
}
JS
document.querySelectorAll('.input').forEach((el) => el.addEventListener('change', function () {
var num1 = document.querySelector('#num1').value;
var num2 = document.querySelector('#num2').value;
var num3 = document.querySelector('#num3').value;
var num4 = document.querySelector('#num4').value;
document.querySelectorAll('.box').forEach((n) => n.style.setProperty('border-image-width', num1 + 'px ' + num2 + 'px ' + num3 + 'px ' + num4 + 'px'));
}));
HTML
<div class="info">
<p>За допомогою властивості <code>border-image-width</code> ми можемо визначити ширину зображення заданого для межі елементу.</p>
<p>Для першого блоку застосована ширина <em>16px</em>, для другого - <em>32px</em>, третього - <em>16px 12px 6px 0</em>.</p>
</div>
<div class="wrapper">
<div class="block"></div>
<div class="block one"></div>
<div class="block two"></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: 150px;
height: 150px;
background-color: gold;
padding: 16px;
border: 16px solid #444;
border-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 3 3'%3E%3Crect width='3' height='3' fill='%232a9d8f'/%3E%3Crect x='1' y='1' width='1' height='1' fill='%23e9c46a'/%3E%3Crect width='1' height='1' fill='%23e63946'/%3E%3Crect x='2' width='1' height='1' fill='%23e63946'/%3E%3Crect y='2' width='1' height='1' fill='%23e63946'/%3E%3Crect x='2' y='2' width='1' height='1' fill='%23e63946'/%3E%3C/svg%3E") 16 round round;
}
.block.one {
border-image-width: 32px;
}
.block.two {
border-image-width: 16px 12px 6px 0;
}
HTML
<div class="block">
<p>Ось такий гарний візерунок <br> замість нудної лінії...</p>
</div>
CSS
.block {
width: 500px;
height: 350px;
font-family: sans-serif;
font-size: 18px;
text-align: center;
padding-top: 12%;
box-sizing: border-box;
border: 16px solid #666;
border-image-source: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 3 3'%3E%3Crect width='3' height='3' fill='%232a9d8f'/%3E%3Crect x='1' y='1' width='1' height='1' fill='%23e9c46a'/%3E%3Crect width='1' height='1' fill='%23e63946'/%3E%3Crect x='2' width='1' height='1' fill='%23e63946'/%3E%3Crect y='2' width='1' height='1' fill='%23e63946'/%3E%3Crect x='2' y='2' width='1' height='1' fill='%23e63946'/%3E%3C/svg%3E");
border-image-slice: 16;
border-image-repeat: round;
border-image-width: 20px 5px;
}
HTML
<div class="block"></div>
CSS
.block {
background-color: #eee;
width: 300px;
height: 250px;
border: 8px solid #666;
border-image-source: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 3 3'%3E%3Crect width='3' height='3' fill='%232a9d8f'/%3E%3Crect x='1' y='1' width='1' height='1' fill='%23e9c46a'/%3E%3Crect width='1' height='1' fill='%23e63946'/%3E%3Crect x='2' width='1' height='1' fill='%23e63946'/%3E%3Crect y='2' width='1' height='1' fill='%23e63946'/%3E%3Crect x='2' y='2' width='1' height='1' fill='%23e63946'/%3E%3C/svg%3E");
border-image-slice: 16;
border-image-width: 16px 8px;
border-image-repeat: round;
}
Коментарі
Коментарів ще немає — будьте першим!