Як зробити дірку у <div> або трошки про mix-blend-mode

В нашій компанії почали оновлювати апку ну і звичайно оновлювати дизайни. Приходять якось дизайнири і кажуть: Ми тут думали думали і придумали от такий от модал:

дизайн який має бути

Що ж тут такого модал як модал але не все так просто. Середня частина модала має бути також прозорою і там мають проявлятися обриси бекграунду сайту.

Для прикладу не будемо створювати прям аж такий таки модал, а спрощений. Отже HTML буде виглядати так:

<div class="modal">
  <div class="header">
    <span class="header-text">
      Some text
    </span>
    <span class="close-button">&#x2715;</span>
  </div>
  <div class="content">
    <p>
      Some content
    </p>
  </div>
</div>

Базовий CSS наступний:

.modal {
  background-color: rgba(0, 0, 0, 0.7);
  backdrop-filter: blur(50px);
  max-width: 400px;
  max-height: 600px;
  padding: 8px;
  gap: 8px;
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  align-self: stretch;
}

.header-text {
  color: #fff;
  font-size: 14px;
  font-weight: 500;
  line-height: 20px;
  padding-right: 8px;
}

.close-button {
  color: #fff;
}

.content{
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  row-gap: 16px;
  align-self: stretch;
  border-radius: 8px;
  padding: 8px;
  background-color: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(50px);
  color: #fff;
  height: 200px;
}

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

Результат маємо наступний:

перша спроба

Бачимо що центральний дів в нас не прозорий і не дуже світлий незважаючи на те що він білий. Що ж нам робити що б нас не побили дизайнери і QA?

На допомогу нам прийде mix-blend-mode.

Що таке mix-blend-mode? MDN нам каже що це властивість яка встановлює, як вміст елемента має поєднуватися з вмістом батьківського елемента та фоном елемента.

mix-blend-mode має безліч варіантів:

mix-blend-mode: normal;
mix-blend-mode: multiply;
mix-blend-mode: screen;
mix-blend-mode: overlay;
mix-blend-mode: darken;
mix-blend-mode: lighten;
mix-blend-mode: color-dodge;
mix-blend-mode: color-burn;
mix-blend-mode: hard-light;
mix-blend-mode: soft-light;
mix-blend-mode: difference;
mix-blend-mode: exclusion;
mix-blend-mode: hue;
mix-blend-mode: saturation;
mix-blend-mode: color;
mix-blend-mode: luminosity;

Деякі зних схожі на фільтри в інстаграмі і можна робити прикольні фони.

Нам буде потрібен mix-blend-mode:lighten;

Для того що б виправити наш модал ми огортаємо наш контент модалу у ще один <div> і отримаємо

<div class="cover">
   <div class="content">
       <p>
          Some content
       </p>
   </div>
 </div>

Далі робимо бекграунд прозорим і додаємо наш mix-blend-mode.

.cover{
  background: transparent;
  mix-blend-mode: lighten;
}

І отримаємо наш бажаний прозорий фон контенту.

фінал

Кольори бекграунду зміксовані так що фактично в нас тепер посерд діву “прозора дірка” через яку ми бачимо обриси бекграунду, а зверху той колір який просили нас дизайнери.

Не виключаю що є і інші варіанти це зробити, але сьогодні про такий метод досягти бажаного.

П.С.

Ніколи ще не писала статті про свою роботу так що перший млинець може бути комом.

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
О
Олександра@olexandra_im

212Прочитань
5Автори
7Читачі
На Друкарні з 6 травня

Більше від автора

Вам також сподобається

  • Тестова документація

    Кожен тестувальник регулярно використовує тестову документацію, завдяки ній тестувальник спілкується з розробниками, завдяки ній тестувальник знає що і коли робити.

    Теми цього довгочиту:

    Qa
  • Принцип KISS: стільки, скільки потрібно

    Всім привіт! Я розпочинаю серію дописів на тему принципів та дизайн патернів у програмуванні. Мета цього, в першу чергу, особисто мені, засвоїти інформацію на кращому рівні. Перша тема - принцип KISS.

    Теми цього довгочиту:

    Програмування
  • Java. Чому локи потрібно тримати якомога менший час?

    Коротший час блокувань може збільшити загальну пропускну здатність системи, оскільки більше потоків може отримати доступ до синхронізованих секцій протягом певного часу.

    Теми цього довгочиту:

    Java

Коментарі (3)

дуже цікаво, дякую) перший раз чую про таку специфічну css властивість

Вам також сподобається

  • Тестова документація

    Кожен тестувальник регулярно використовує тестову документацію, завдяки ній тестувальник спілкується з розробниками, завдяки ній тестувальник знає що і коли робити.

    Теми цього довгочиту:

    Qa
  • Принцип KISS: стільки, скільки потрібно

    Всім привіт! Я розпочинаю серію дописів на тему принципів та дизайн патернів у програмуванні. Мета цього, в першу чергу, особисто мені, засвоїти інформацію на кращому рівні. Перша тема - принцип KISS.

    Теми цього довгочиту:

    Програмування
  • Java. Чому локи потрібно тримати якомога менший час?

    Коротший час блокувань може збільшити загальну пропускну здатність системи, оскільки більше потоків може отримати доступ до синхронізованих секцій протягом певного часу.

    Теми цього довгочиту:

    Java