Свойство CSS border-image-source
Свойство CSS border-image-source позволяет задать изображение в качестве рамки элемента. Примеры и интерактивные демонстрации.
Свойство CSS border-image-source задаёт изображение, используемое для отрисовки рамки элемента вместо обычного border-style. Оно отвечает на вопрос «какую картинку нарезать и разместить вокруг блока?», тогда как сопутствующие свойства определяют как именно эта картинка будет нарезана и расположена.
На этой странице описаны значения, принимаемые border-image-source, взаимодействие со смежными свойствами border-image-*, типичные ошибки, из-за которых рамка-изображение бесследно исчезает, а также редактируемые примеры для экспериментов.
border-image-source — одно из свойств CSS3 и почти всегда задаётся совместно с border-image-slice через сокращённое свойство border-image.
Когда его использовать
Рамка-изображение нужна тогда, когда обычный border не даёт желаемого вида — декоративная рамка, лента, нарисованный от руки край или градиентный контур. Поскольку источником может быть любое изображение, в том числе CSS-градиент, можно получать эффекты, недоступные при использовании одного лишь border-color.
Как border-image-source взаимодействует с другими свойствами
border-image-source лишь называет изображение. Четыре смежных свойства управляют остальным, причём рамка-изображение не отображается до тех пор, пока не задано border-image-slice:
border-image-slice— нарезает источник на 9 областей (4 угла, 4 стороны, 1 центр).border-image-width— толщина нарисованной рамки-изображения.border-image-outset— насколько далеко изображение выступает за пределы блока рамки.css-border-image-repeat-property— способ размещения боковых фрагментов:stretch,repeatилиround.
Важные особенности
- Сначала задайте
border. Рамка-изображение заполняет область, определённую рамкой элемента, поэтому по-прежнему необходимо задатьborder-width(обычноborder: 10px solid transparent;). Без ширины рамки рисовать попросту некуда. - Требуется
border-image-slice. Если задать только источник, ничего не отобразится: браузеру нужны значения нарезки, чтобы определить положение углов. noneили неудавшаяся загрузка возвращают кborder-style. Если изображение не может быть отображено, используются обычные стили рамки — задайте видимыйborder-styleкак запасной вариант.
| Начальное значение | none |
|---|---|
| Применяется | Ко всем элементам, кроме внутренних элементов таблицы при border-collapse со значением "collapse". Также применяется к ::first-letter. |
| Наследуется | Нет. |
| Анимируется | Нет. |
| Версия | CSS3 |
| Синтаксис DOM | object.style.borderImageSource = "url()"; |
Синтаксис
Значения CSS border-image-source
border-image-source: none | image | initial | inherit;Пример свойства border-image-source:
Пример кода CSS border-image-source
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.border {
border: 10px solid transparent;
padding: 15px;
border-image-source: url("/uploads/media/default/0001/01/812bf6a749522b8185c1beee20dd99dd6c6c87da.jpeg");
border-image-slice: 15;
}
</style>
</head>
<body>
<h2>Border-image-source property example</h2>
<p class="border">Hello World!</p>
<p>Here is the original image:</p>
<img src="/uploads/media/default/0001/01/812bf6a749522b8185c1beee20dd99dd6c6c87da.jpeg" alt="Border image" style="width:50%" />
</body>
</html>Результат

Пример с CSS-градиентом в качестве источника
Источник не обязан быть файлом — подойдёт любое CSS-изображение, включая градиенты. Этот пример рисует цветную рамку без каких-либо графических файлов:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.gradient-border {
border: 12px solid transparent;
padding: 15px;
border-image-source: linear-gradient(45deg, #6610f2, #20c997);
border-image-slice: 1;
}
</style>
</head>
<body>
<p class="gradient-border">A border drawn from a CSS gradient.</p>
</body>
</html>Здесь border-image-slice: 1 нарезает один пиксель, чего достаточно для плавного градиента, поскольку градиент продолжается вдоль каждой стороны.
Значения
| Значение | Описание |
|---|---|
| none | Изображение не используется; элемент возвращается к своему border-style. Это значение по умолчанию. |
| image | Любое CSS <image>: url() на файл или градиент, например linear-gradient(...) / radial-gradient(...). |
| initial | Устанавливает свойство в значение по умолчанию (none). |
| inherit | Наследует значение от родительского элемента. |
Связанные свойства
- border-image — сокращённое свойство для всех пяти свойств
border-image-*. - border-image-slice — необходимо для фактического отображения изображения.
- border-image-width и border-image-outset — размер и выход за границы.
- border-image-repeat — способ размещения боковых фрагментов.