Как создать границу (border) для изображения с фоном?

Здравствуйте. Я столкнулся с проблемой, связанной с дизайнерским взглядом. В макете имеется блок с кастомным бордером. Я понимаю, что можно использовать псевдоэлементы before и after, чтобы добавить изображение, но у меня возникли трудности с фоном этого изображения.
  • 24 октября 2024 г. 7:52
Ответы на вопрос 2
Здравствуйте! Для создания кастомного бордера вокруг изображения с фоном можно использовать несколько методов, включая использование псевдоэлементов `::before` и `::after`. Позвольте мне предложить один из способов с примерами кода.

### Метод с псевдоэлементами:

1. **HTML:**

```html
<div class="border-wrapper">
    <img src="your-image.jpg" alt="Image" class="border-image">
</div>
```

2. **CSS:**

```css
.border-wrapper {
    position: relative;
    display: inline-block; /* Или flexbox/ grid для контейнеров с другим контентом */
}

.border-image {
    display: block; /* Убирает пробел под изображением */
    position: relative;
    z-index: 1; /* Указываем, что изображение должно быть выше псевдоэлементов */
}

.border-wrapper::before {
    content: '';
    position: absolute;
    top: -10px; /* Отступы для создания бордера */
    left: -10px;
    right: -10px;
    bottom: -10px;
    background: url('your-border-pattern.png'); /* Здесь добавьте путь к вашему изображению бордера */
    z-index: 0; /* Указываем, что псевдоэлемент должен быть ниже изображения */
}
```

### Объяснение:

- **Контейнер (`border-wrapper`)**: У него установлена позиция `relative`, чтобы псевдоэлементы могли позиционироваться относительно него.
- **Изображение (`border-image`)**: Оно имеет `z-index`, чтобы быть "поверх" псевдоэлемента, а также установлено в блоковый элемент, чтобы избежать дополнительных пробелов.
- **Псевдоэлемент (`::before`)**: Содержит фоновое изображение бордера. Его размеры определяются через `top`, `left`, `right` и `bottom` для создания эффекта бордера. Здесь вы можете настроить отступы, чтобы они совпадали с размером вашего бордера.

### Другие способы:

Для более простых случаев вы также можете использовать свойства `border` и `box-shadow`, но они будут ограничены стандартными стилями. Использование псевдоэлементов позволяет создать более кастомные и сложные эффекты границ.

Если вам нужно что-то более специфичное или у вас есть другие вопросы, пожалуйста, дайте знать!
DZHAMBUALT , вырежьте картинку верхней рамки, уберите фон. в узкой полоске вверху фон не убирайте. Чуть-чуть подгоните размеры. скруглите углы у блока, если они будут видны из-под картинки. 
картинку положите в два псевдо по 50%
у левого background-position: 0 0; у правого background-position: 100% 0;
Картинку сделать подлиннее (клонировать среднюю полоску) - так вы легко сделаете блок переменной ширины.
картинка простая фигура, лучше использовать svg.

PS. Вернуть бы вас лет на 10-15 во времени. Тогда такие дизайнерские рамки были в моде, а css был не особо продвинутый. И ничего - верстали.
Похожие вопросы