blob: a94cde4069cfc04eb7b0a715d4c19b8b1dcd8e9f [file] [log] [blame]
<!doctype html>
<title>Animating opacity, transform, filter, backdrop-filter should establish a stacking context.</title>
<link rel="help" href="https://drafts.csswg.org/web-animations-1/#side-effects-section">
<style>
.shouldStack {
position: absolute;
width: 150px;
height: 50px;
background-color: red;
}
.shouldNotStack {
position: absolute;
width: 150px;
height: 50px;
background-color: green;
}
.child {
position: relative;
top: 0px;
left: 0px;
width: 150px;
height: 50px;
background-color: green;
z-index: -1;
}
.shouldNotStack .child {
background-color: red;
}
#animatedOpacity {
/* Use a large duration so animation is effectively invisible. */
animation-duration: 100000s;
animation-name: opacity_frames;
top: 0px;
}
@keyframes opacity_frames {
to {
opacity: 0;
}
}
#animatedTransform {
animation-duration: 100000s;
animation-name: transform_frames;
top: 100px;
}
@keyframes transform_frames {
to {
transform: translateX(10px);
}
}
#animatedFilter {
animation-duration: 100000s;
animation-name: filter_frames;
top: 200px;
}
@keyframes filter_frames {
to {
filter: grayscale(50%);
}
}
#animatedBackdrop {
animation-duration: 100000s;
animation-name: backdrop_frames;
top: 300px;
}
@keyframes backdrop_frames {
to {
backdrop-filter: grayscale(50%);
}
}
#animatedLeft {
animation-duration: 100000s;
animation-name: left_frames;
top: 400px;
}
@keyframes left_frames {
to {
left: 10px;
}
}
</style>
<div id="animatedOpacity" class="shouldStack">
<div class="child">animated opacity</div>
</div>
<div id="animatedTransform" class="shouldStack">
<div class="child">animated transform</div>
</div>
<div id="animatedFilter" class="shouldStack">
<div class="child">animated filter</div>
</div>
<div id="animatedBackdrop" class="shouldStack">
<div class="child">animated backdrop-filter</div>
</div>
<div id="animatedLeft" class="shouldNotStack">
<div class="child">animated left</div>
</div>