Я пытаюсь создать эффект матового стекла на непрямоугольном элементе, но это не получается. У меня странная проблема, которую я не могу обернуть вокруг ...
Эффект матового стекла легко реализовать, установив фиксированное фоновое изображение на тело документа, добавив частично прозрачный цвет фона к элементу и создав псевдоэлемент :: before с тем же фиксированным фоновым изображением и применив фильтр размытия. Вот так:
body {
background: url(bg-lanterns.jpg) 0 / cover fixed;
}
main {
position: relative;
margin: 1rem auto;
padding: 1rem;
height: 600px;
width: 800px;
background: rgba(255,255,255,0.7);
}
main::before {
content: '';
z-index: -1;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url(bg-lanterns.jpg) 0 / cover fixed;
filter: blur(10px);
}
Создать непрямоугольный элемент также легко, используя clip-path
, например:
main {
position: relative;
margin: 1rem auto;
padding: 1rem;
height: 600px;
width: 800px;
background: rgba(255,255,255,0.7);
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
}
Но попытка объединить эти два эффекта нарушает порядок наложения и заставляет элемент :: before появляться над белым фоном.
Я получаю одинаковый результат в Chrome и Firefox, поэтому мне интересно, является ли это ожидаемым поведением, и я просто делаю что-то не так ... Кто-нибудь может пролить свет на то, что здесь происходит?
Вот живая демонстрация:
body {
background: url(https://i.imgur.com/y1TH8fR.jpg) 0 / cover fixed;
}
main {
position: relative;
margin: 1rem auto;
padding: 1rem;
height: 600px;
width: 800px;
background: rgba(255,255,255,0.7);
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
}
main::before {
content: '';
z-index: -1;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
padding: 1rem;
background: url(https://i.imgur.com/y1TH8fR.jpg) 0 / cover fixed;
filter: blur(10px);
}
<main></main>