border-image-outset в CSS — виніс рамки-картинки назовні


Властивість border-image-outset задає відстань на яку зображення може вийти за межі кордонів блоку.

За допомогою даної властивості можна встановити одночасно відстань відступу для верхнього, правого, нижнього і лівого кордону. Залежно від кількості значень, встановлюються різні елементи відступів:

  • Якщо вказано єдине значення, то дана величина застосовується для відступів від всіх країв кордону.
  • Якщо вказано два значення, то перша величина - відступ від верхнього і нижнього краю, а друга - для лівого і правго.
  • Три значення, встановлюють, ширину відступу від верхнього, правого і лівого, а також нижнього кордонів.
  • Чотири значення послідовно застосовуються для всіх відступів, починаючи з верхнього, за годинниковою стрілкою, - верхній, правий, нижній, лівий.
автор: Svitlana

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

автор: NagarD

Порада

Зверніть увагу на властивість border-image (це скорочена властивість для установки всіх border-image- властивостей).

автор: Svitlana
Порада

Щоб зекономити час, рекомендується використовувати border-image для встановлення всіх властивостей для зображення межі одним правилом.

автор: Svitlana
Нотатка

Частини зображення, що виступають за межі, як результат значення border-box властивості box-sizing, не збільшують розмір елементу, а також не можуть бити прокручені. Ці області також, не реагують на кліки миші, та ніяк не впливають на батьківський елемент при взаємодії з нею.

автор: Svitlana
Нотатка

Використання від'ємних значень заборонено, і будь-яке від'ємне значення буде трактуватися як 0.

автор: Svitlana
Нотатка

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

автор: Svitlana

Синтаксис

border-image-outset: length|number|initial|inherit;

Властивість border-image-outset може отримувати 4 значень:

length

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

автор: Svitlana

number

Кратне значення для відповідного значення властивості border-width

автор: Svitlana

initial

Встановлює властивість у значення без задання

автор: Svitlana

inherit

Вказує на спадковість властивості від свого батьківського елемента.

автор: Svitlana

Значення без задання: 0
Наслідує: Ні
Анімується: Ні
JavaScript синтаксис: object.style.borderImageOutset="10px"

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
15 15 6 15 12 11
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 15 6

Приклади

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

Однакові рамки-зображення, але в другому блоці border-image-outset висуває рамку на 10 пікселів назовні за межі блока.

HTML

<div class="box">без outset</div>
<div class="box out">border-image-outset: 10px</div>

CSS

.box {
    margin: 16px;
    padding: 12px;
    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;
}

.out {
    border-image-outset: 10px;
}
автор: Svitlana

П'ять однакових коробок із картинкою межі. Перша — без виносу, далі число (множник товщини), довжина, недійсний відсоток (лишається нуль) і великий винос, за якого між картинкою й коробкою видно порожній проміжок. Останній ряд: та сама коробка з великим виносом усередині контейнера з overflow: hidden — усе, що вийшло за край, обрізано.

HTML

<div class="row">
    <figure><div class="b o0"></div><figcaption>0 — типове</figcaption></figure>
    <figure><div class="b o2"></div><figcaption>2 — удвічі за межу</figcaption></figure>
    <figure><div class="b opx"></div><figcaption>30px — довжина</figcaption></figure>
    <figure><div class="b opc"></div><figcaption>10% — недійсно, лишається 0</figcaption></figure>
    <figure><div class="b obig"></div><figcaption>40px — між картинкою й коробкою порожньо</figcaption></figure>
</div>

<p class="cap">Той самий винос у контейнері з overflow: hidden — усе зайве обрізано:</p>
<div class="clip">
    <div class="b obig"></div>
</div>

CSS

.row {
    display: flex;
    flex-wrap: wrap;
    gap: 60px;
    margin-bottom: 40px;
}

figure {
    margin: 0;
}

figcaption {
    margin-top: 46px;
    max-width: 120px;
    font: .8em/1.35 system-ui, sans-serif;
    color: #5a6472;
}

.b {
    width: 90px;
    height: 50px;
    margin: 44px 0 0;
    background: #eef1f5;
    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;
}

.o0 { border-image-outset: 0; }
.o2 { border-image-outset: 2; }
.opx { border-image-outset: 30px; }
.opc { border-image-outset: 10%; }
.obig { border-image-outset: 40px; }

.cap {
    margin: 0 0 10px;
    max-width: 520px;
    font: 600 .9em/1.45 system-ui, sans-serif;
    color: #5a6472;
}

.clip {
    overflow: hidden;
    width: 240px;
    height: 130px;
    background: #cfe8d8;
    border: 1px dashed #9dc7ac;
}

.clip .b {
    margin: 44px auto 0;
}
автор: NagarD

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

HTML

<div class="box">

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

<p>Вона встановлює ширину лівого кордону елемента.</p>

<strong>border-left-width: </strong>
<input type="number" class="input" id="num" value="24" min="0">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: 16px solid #444;
  border-left-width: 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 num = document.querySelector('#num').value;
  document.querySelectorAll('.box').forEach((n) => n.style.setProperty('border-left-width', num + 'px'));
}));
автор: Svitlana

HTML

<div class="info">
	<p>За допомогою властивості <code>border-image-outset</code> ми можемо встановити відстань, на яку зображення кордону може вийти за межі блоку.</p>
	<p>Нижче розташовані три блоки. Для першого застосоване значення без задання (тобто 100%) кордон, для двох інишх - 10px і 25px відповідно. При чому, ширина кордону дорівнює 16px.</p>
</div>

<div class="wrapper">
	<div class="block"></div>
	<div class="block small"></div>
	<div class="block big"></div>
</div>

CSS

* {
	box-sizing: border-box;
}

body {
	font-family: monospace;
	font-size: 17px;
  text-align: center;
}

.info {
	padding: 6px 16px;
  margin-bottom: 20px;
}

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

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

.block {
	width: 100px;
	height: 100px;
	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.small {
	border-image-outset: 10px;
}

.block.big {
	border-image-outset: 25px;
}
автор: Svitlana

HTML

<div class="block"></div>

CSS

.block {
  background-color: #eee;
  width: 300px;
  height: 250px;
  border: 16px solid #666;
  border-image-source: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='84' height='84' 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: 28; 
  border-image-width: 0.6em 1.0em; 
  border-image-outset: 0em 1.1em 1.5em 0.6em; 
  border-image-repeat: round; 
}
автор: 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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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