1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- TODO update link -->
<link rel="help" href="https://www.w3.org/TR/css-view-transitions-2/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Scoped view transition with fill forwards</title>
</head>
<style>
#target {
background-color: blue;
height: 100px;
width: 100px;
view-transition-name: target;
z-index: 1;
}
::view-transition-group(*),
::view-transition-old(*),
::view-transition-new(*) {
animation-fill-mode: forwards;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/css-view-transitions/support/common.js"></script>
<body>
<div id="target">
</div>
</body>
<script>
promise_test(async () => {
const target = document.getElementById('target');
const vt = target.startViewTransition(() => {
target.style = 'background-color: teal';
});
await vt.ready;
assert_animation_pseudos(
target,
[
'::view-transition-group(target)',
'::view-transition-new(target)',
'::view-transition-old(target)'
]);
assert_animation_names(
'::view-transition-old(target)',
[
'-ua-mix-blend-mode-plus-lighter',
'-ua-view-transition-fade-out'
],
'fade out on old target');
assert_animation_names(
'::view-transition-new(target)',
[
'-ua-mix-blend-mode-plus-lighter',
'-ua-view-transition-fade-in'
],
'fade in on new target');
const tally = document.getAnimations().length;
assert_greater_than(tally, 0);
document.getAnimations().forEach(a => {
a.finish();
});
assert_equals(document.getAnimations().length, tally);
await vt.finished;
// Need to wait one more frame for effect of VT to be finished.
await new Promise(requestAnimationFrame);
assert_equals(document.getAnimations().length, 0);
}, 'View transition animations do not persist once the transition is ' +
'finished even if animation-fill-mode is forwards');
</script>
</html>
|