File: clip-path-interpolation-shape-control-points.tentative.html

package info (click to toggle)
thunderbird 1%3A140.3.1esr-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,608,628 kB
  • sloc: cpp: 7,671,698; javascript: 5,901,131; ansic: 3,898,955; python: 1,413,270; xml: 653,997; asm: 462,284; java: 180,948; sh: 113,489; makefile: 20,460; perl: 14,288; objc: 13,059; yacc: 4,583; pascal: 3,352; lex: 1,720; ruby: 1,222; exp: 762; sql: 715; awk: 580; php: 436; lisp: 430; sed: 70; csh: 10
file content (150 lines) | stat: -rw-r--r-- 6,242 bytes parent folder | download | duplicates (7)
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<!DOCTYPE html>
<meta charset="UTF-8">
<title>clip-path-interpolation</title>
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path">
<link rel="help" href="https://drafts.csswg.org/css-shapes-2/#interpolating-shape">
<meta name="assert" content="clip-path supports animation for shape()">

<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>

<style>
html {
  font-size: 16px;
  font-family: Ahem;
}

.parent {
  clip-path: shape(from -5px 5px, move to 5% 1px);
  padding: 10px;
}

.target {
  display: inline-block;
  width: 100px;
  height: 100px;
  background-color: black;
  clip-path: shape(from 5px 5px, line to 10px 10%);
}

.expected {
  background-color: green;
}
</style>
<body>
<script>
test_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, curve to 100% 50% with 20px 30px from origin / 40px 50px)',
    to: 'shape(from top left, curve to 100% 50% with 20px 30px / 40px 150px from origin)',
  }, [
    {at: 0,    expect: 'shape(from top left, curve to 100% 50% with 20px 30px / 40px 50px)'},
    {at: 0.5,  expect: 'shape(from top left, curve to 100% 50% with 20px 30px / 40px 100px)'},
    {at: 1,    expect: 'shape(from top left, curve to 100% 50% with 20px 30px / 40px 150px)'},
]);

test_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, curve to 100% 50% with 20px 30px from start / 40px 50px)',
    to: 'shape(from top left, curve to 100% 50% with 20px 30px from start / 40px 150px from origin)',
  }, [
    {at: 0,    expect: 'shape(from top left, curve to 100% 50% with 20px 30px from start / 40px 50px)'},
    {at: 0.5,  expect: 'shape(from top left, curve to 100% 50% with 20px 30px from start / 40px 100px)'},
    {at: 1,    expect: 'shape(from top left, curve to 100% 50% with 20px 30px from start / 40px 150px)'},
]);

test_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, curve by 100% 50% with 20px 30px from start / 40px 50px)',
    to: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 150px)',
  }, [
    {at: 0,    expect: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 50px)'},
    {at: 0.5,  expect: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 100px)'},
    {at: 1,    expect: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 150px)'},
]);

test_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 50px from start)',
    to: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 150px)',
  }, [
    {at: 0,    expect: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 50px)'},
    {at: 0.5,  expect: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 100px)'},
    {at: 1,    expect: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 150px)'},
]);

test_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 50px from origin)',
    to: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 150px from origin)',
  }, [
    {at: 0,    expect: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 50px from origin)'},
    {at: 0.5,  expect: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 100px from origin)'},
    {at: 1,    expect: 'shape(from top left, curve by 100% 50% with 20px 30px / 40px 150px from origin)'},
]);

test_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, curve by 100% 50% with 20px 30px from end / 40px 50px)',
    to: 'shape(from top left, curve by 100% 50% with 20px 30px from end / 40px 150px)',
  }, [
    {at: 0,    expect: 'shape(from top left, curve by 100% 50% with 20px 30px from end / 40px 50px)'},
    {at: 0.5,  expect: 'shape(from top left, curve by 100% 50% with 20px 30px from end / 40px 100px)'},
    {at: 1,    expect: 'shape(from top left, curve by 100% 50% with 20px 30px from end / 40px 150px)'},
]);

test_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, smooth to 100% 50% with 20px 50px)',
    to: 'shape(from top left, smooth to 100% 50% with 20px 150px from origin)',
  }, [
    {at: 0,    expect: 'shape(from top left, smooth to 100% 50% with 20px 50px)'},
    {at: 0.5,  expect: 'shape(from top left, smooth to 100% 50% with 20px 100px)'},
    {at: 1,    expect: 'shape(from top left, smooth to 100% 50% with 20px 150px)'},
]);

test_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, smooth to 100% 50% with 20px 50px from start)',
    to: 'shape(from top left, smooth to 100% 50% with 20px 150px from start)',
  }, [
    {at: 0,    expect: 'shape(from top left, smooth to 100% 50% with 20px 50px from start)'},
    {at: 0.5,  expect: 'shape(from top left, smooth to 100% 50% with 20px 100px from start)'},
    {at: 1,    expect: 'shape(from top left, smooth to 100% 50% with 20px 150px from start)'},
]);

test_no_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, curve to 100% 50% with 20px 30px from start / 40px 50px)',
    to: 'shape(from top left, curve to 100% 50% with 20px 30px / 40px 150px from origin)',
});

test_no_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, curve to 100% 50% with 20px 30px from end / 40px 50px)',
    to: 'shape(from top left, curve to 100% 50% with 20px 30px / 40px 150px from origin)',
});

test_no_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, curve to 100% 50% with 20px 30px / 40px 50px from end)',
    to: 'shape(from top left, curve to 100% 50% with 20px 30px / 40px 150px from origin)',
});


test_no_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, smooth to 100% 50% with 20px 50px from start)',
    to: 'shape(from top left, smooth to 100% 50% with 20px 150px)',
});

test_no_interpolation({
    property: 'clip-path',
    from: 'shape(from top left, smooth by 100% 50% with 20px 50px from origin)',
    to: 'shape(from top left, smooth by 100% 50% with 20px 150px)',
});

</script>
</body>