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
75
|
<!DOCTYPE html>
<title>Test that non-animated style is responsive to animated properties</title>
<link rel="help" href="https://drafts.csswg.org/css-animations/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@keyframes font_size_animation {
from { font-size: 10px; }
to { font-size: 20px; }
}
@keyframes var_animation {
from { --x: 10px; }
to { --x: 20px; }
}
#targets > div {
animation-duration: 1000s;
animation-delay: -500s;
animation-timing-function: steps(2, end);
}
#target1 {
animation-name: font_size_animation;
font-size: 1px;
width: 1em;
}
#ref1 {
width: 15px;
}
#target2 {
animation-name: font_size_animation;
font-size: 1px;
width: 1ex;
}
#ref2 {
font-size: 15px;
width: 1ex;
}
#target3 {
animation-name: var_animation;
--x: 0px;
width: var(--x);
}
#ref3 {
width: 20px;
}
</style>
<div id="targets">
<div id="target1"></div>
<div id="target2"></div>
<div id="target3"></div>
</div>
<div id="refs">
<div id="ref1"></div>
<div id="ref2"></div>
<div id="ref3"></div>
</div>
<script>
// Test that the computed value of the given property is equal on
// 'target' and 'ref'.
function test_ref(target, ref, property, description) {
test(() => {
let actual = getComputedStyle(target).getPropertyValue(property);
let expected = getComputedStyle(ref).getPropertyValue(property);
assert_equals(actual, expected);
}, description);
}
test_ref(target1, ref1, 'width', 'em units respond to font-size animation');
test_ref(target2, ref2, 'width', 'ex units respond to font-size animation');
test_ref(target3, ref3, 'width', 'var() references respond to custom property animation');
</script>
|