问题
I have a div.outer
and inside a div.inner
, both with position: absolute;
and backdrop-filter: blur(8px);
.
https://jsbin.com/nihakiqocu/1/edit?html,css,output
Safari (left) gives the desired result – both divs blur what's behind them.
Chrome (right), however, only applies the blur of div.outer
:
I have a solution: adding another div inside div.outer
and moving backdrop-filter: blur(8px);
to that new div.
However, I would appreciate a solution that doesn't require changing the DOM from the first jsbin. Also, does anybody know what is causing this – is it a Chrome bug?
https://jsbin.com/rasudijame/1/edit?html,css,output
PS: it works on iOS's Chrome, but not on Android's Chrome and also not on Mac OS's Chrome
回答1:
Place the backdrop filter on css pseudo element. This allows nested backdrop filters. Also you can use z-index: -1;
to position your backdrop behind your elemets
div {
height: 100px;
width: 100px;
}
.wrapper {
position: absolute;
}
.outer, .inner {
position: relative;
}
.outer::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
-webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
}
.outer {
background: rgba(255, 0, 0, .5);
}
.inner::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
-webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
}
.inner {
background: rgba(0, 0, 255, .5);
top: 50px;
left: 50px;
}
main {
position: relative;
}
<main>
<div class="wrapper">
<div class="outer">
<div class="inner"></div>
</div>
</div>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
</main>
And here is codepen
来源:https://stackoverflow.com/questions/60997948/backdrop-filter-not-working-for-nested-elements-in-chrome