x
 
Олег Кузнецов
1 февраля 2018
Советы почтой каждую неделю
Пожалуйста, получите наше письмо, чтобы подтвердить свой адрес:
Вы подписаны на «Советы за неделю»:

Как сверстать такую плашку с размытием фона?


Проще всего было бы использовать свойство backdrop-filter, которой позволяет наложить фильтр на фон:

<!-- index.html -->
<div class="box">
  <div class="panel">We are fighting
  for the survival of our culture, while
  there are cultural relativists
  in power</div>
</div>
.box {
  background: url('https://picsum.photos/500/500');
  display: flex;
  align-items: center;
  justify-content: center;
}

.panel {
  -webkit-backdrop-filter: blur(5px);
  backdrop-filter: blur(5px);
}
We are fighting for the survival of our culture, while there are cultural relativists in power

К сожалению, это свойство поддерживает только Сафари и самая свежая версия Эджа. В Хроме можно включить экспериментальную поддержку с помощью флага.

Но современные браузеры поддерживают свойство filter. Filter накладывает фильтр на сам элемент, поэтому мы можем провернуть трюк.

Сверстаем плашку без размытия:

Поддержка backdrop-filter
<!-- index.html -->
<div class="box">
  <div class="panel">We are fighting
  for the survival of our culture, while
  there are cultural relativists
  in power</div>
</div>
.box {
  background: url('https://picsum.photos/500/500');
  display: flex;
  align-items: center;
  justify-content: center;
}

.panel {
  width: 300px;
  padding: 20px;
  border: .5px solid #fff;
  color: #fff;
  text-align: center;
  filter: blur(5px)
}
We are fighting for the survival of our culture, while there are cultural relativists in power

Продублируем фон в плашку с помощью псевдоэлемента и вынесем текст на отдельный слой, чтобы дублирующий фон не перекрывал его:

<!-- index.html -->
<div class="box">
  <div class="panel">
    <div class="text">We are fighting
    for the survival of our culture, while
    there are cultural relativists
    in power</div>
  </div>
</div>
.box {
  background: url('https://picsum.photos/500/500');
  /* ... */
}

.panel {
  position: relative;
  /* ... */
}

.panel::before {
  content: '';
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  background: url('https://picsum.photos/500/500');
}

.text {
  position: relative;
}
We are fighting for the survival of our culture, while there are cultural relativists in power

Зададим дублирующему фону такие же размеры и выравнивание, как у родительского элемента:

.panel::before {
  /* ... */
  background-size: 500px 300px;
  background-position: center;
}
We are fighting for the survival of our culture, while there are cultural relativists in power

И добавим продублированному фону размытие:

.panel::before {
  /* ... */
  filter: blur(3px);
}
We are fighting for the survival of our culture, while there are cultural relativists in power
P. S. Это был совет о веб-разработке. Хотите знать всё о коде, тестах, фронтенд-разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.
Вёрстка и прототипирование — дисциплина Школы дизайнеров. Набор весной. Оставьте почту, и мы напишем вам, когда откроется следующий набор.
 

Поделиться
Отправить

Цель рубрики — обсуждение вопросов дизайна всех видов, текста в дизайне и взаимоотношений дизайнеров с клиентами.

Мы публикуем комментарии, которые добавляют к уже сказанному новые мысли и хорошие примеры. Мы ожидаем, что такие комментарии составят около 20% от общего числа.

Решение о публикации принимается один раз; мы не имеем возможности комментировать или пересматривать свое решение, хотя оно может быть ошибочно. Уже опубликованные комментарии могут быть удалены через некоторое время, если без них обсуждение не становится менее ценным или интересным.

Вот такой веб 2.0.

EM или REM? 6 Можно ли достичь эффекта переливания без встраивания видео на сайт? 1




Недавно всплыло

3 На основе ролика о распознавании инсульта создан плакат. Вторая часть 1 Как вести себя с человеком, который Джима Кемпа не читал и вину не признаёт? 2 2