Як зробити дірку у <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

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

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

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

  • Кібервійна в Україні так само важлива, як і битва в окопах

    Українська та російська сторони ведуть кібервійну, спрямовану на викрадення даних та сіяння паніки. Російські атаки вже давали тривожний дзвінок, вимикаючи електрику та зламуючи банки та енергетичні компанії. Україна змогла підвищити свою ефективність, але загроза залишається.

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

    Війна
  • Frontend [TypeScript] 2

    TypeScript - Як писати код швидше та надійніше. Про неочевидні речі.

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

    It
  • Mash Script: Оголошення з ініціалізатором

    Стаття про оголошення з ініціалізатором у мові Mash Script пояснює, як цей механізм дозволяє одночасно оголошувати змінну і присвоювати їй значення. Вона наводить приклади різних типів ініціалізацій та пояснює, як цей механізм працює у практиці.

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

    Програмування

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

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

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

  • Кібервійна в Україні так само важлива, як і битва в окопах

    Українська та російська сторони ведуть кібервійну, спрямовану на викрадення даних та сіяння паніки. Російські атаки вже давали тривожний дзвінок, вимикаючи електрику та зламуючи банки та енергетичні компанії. Україна змогла підвищити свою ефективність, але загроза залишається.

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

    Війна
  • Frontend [TypeScript] 2

    TypeScript - Як писати код швидше та надійніше. Про неочевидні речі.

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

    It
  • Mash Script: Оголошення з ініціалізатором

    Стаття про оголошення з ініціалізатором у мові Mash Script пояснює, як цей механізм дозволяє одночасно оголошувати змінну і присвоювати їй значення. Вона наводить приклади різних типів ініціалізацій та пояснює, як цей механізм працює у практиці.

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

    Програмування