Лера, если ширина прерывания заранее известна, то можно обойтись без маски.

Для начала сверстаем блок со сплошной рамкой:

/* html */

<div class="background">
  <div class="block">
    <h2>Grand Tourer</h2>
    <p>a luxury performance car designed for high speed 
    and <nobr>long-distance</nobr> driving</p>
    <button>Shop all</button>
  </div>
</div>
/* css */

.background {
  padding: 20px;
  width: 500px;
  background: url(car.jpg) center / cover;
}

.block {
  position: relative;
  padding: 30px;
  border: 5px solid #fff;
  font-size: 20px;
  text-align: center;
  color: #fff;
}

.block h2 {
  margin: 0 0 10px;
  text-transform: uppercase;
}

.block p {
  margin: 0;
}

.block button {
  /* Спозиционируем ссылку так 
  чтобы она стояла по центру нижней рамки */
  position: absolute;
  bottom: -15px;
  left: 50%;
  transform: translateX(-50%);
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: bold;
  text-transform: uppercase;
  color: #fff;
  background: transparent;
}

Grand Tourer

a luxury performance car designed for high speed and long‑distance driving

А теперь заменим нижнюю рамку на две полоски с помощью псевдоэлементов:

/* css */

.block {
  /* ... */
  border-bottom: 0;
}

.block::before,
.block::after {
  position: absolute;
  top: 100%;
  width: 170px;
  height: 5px;
  background: #fff;
  content: '';
}

.block::before {
  left: -5px;
}

.block::after {
  right: -5px;
}

Grand Tourer

a luxury performance car designed for high speed and long‑distance driving

P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.

Веб‑разработка
Отправить
Поделиться
Запинить

Комментарии

Можно сделать и без фиксированной ширины: обернем button в .footer, а по бокам поставим по div'у

21 мар 2019

Решение можно доработать и для прерывания заранее неизвестной ширины. Для этого надо обернуть текст кнопки в еще один элемент. Например:

<div class="bottom-border">
  <button>Shop all</button>
</div>

Элементу button задать display: inline-block и разместить его по центру родителя. Псевдоэлементам :before и :after задать ширину заведомо превышающую ширину всего блока (не забыв про overflow: hidden у родителя) и сместить их на 100%, относительно элемента button, причем элемент :before надо сместить на 100% справа (right: 100%), а элемент :after на 100% слева (left: 100%).

Рабочий пример:
https://codepen.io/golovinov/pen/rRqRGe

21 мар 2019

Часто вёрстка нужна адаптивная.

Для этого width кнопки и псевдо‑элементов :before :after нижней рамки стоит сделать в % хотя бы приблизительно.

У кнопки width: 30%;
Псевдо‑элементы width: 36%;

21 мар 2019

Рекомендуем другие советы