File: auto-inset-margin-getComputedStyle.html

package info (click to toggle)
firefox 149.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,767,760 kB
  • sloc: cpp: 7,416,064; javascript: 6,752,859; ansic: 3,774,850; python: 1,250,473; xml: 641,578; asm: 439,191; java: 186,617; sh: 56,634; makefile: 18,856; objc: 13,092; perl: 12,763; pascal: 5,960; yacc: 4,583; cs: 3,846; lex: 1,720; ruby: 1,002; php: 436; lisp: 258; awk: 105; sql: 66; sed: 53; csh: 10; exp: 6
file content (120 lines) | stat: -rw-r--r-- 4,484 bytes parent folder | download | duplicates (3)
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
<!DOCTYPE html>
<meta charset="utf-8">
<title>Tests that getComputedStyle() returns auto insets and margins 0 when position-area or anchor-center is used with valid default anchor</title>
<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#position-area">
<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#anchor-pos">
<link rel="author" name="David Shin" href="mailto:dshin@mozilla.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
.abs-cb {
  width: 60px;
  height: 60px;
  border: 5px solid;
  position: relative;
  anchor-scope: all;
  display: inline-block;
  /* Nudge static position against padding box. */
  padding: 10px;
}

.anchor {
  anchor-name: --a;
  position: absolute;
  left: 20px;
  top: 20px;
  width: 20px;
  height: 20px;
  background: pink;
}

.positioned {
  position: absolute;
  background: purple;
  width: 20px;
  height: 20px;
}

.margin-auto > .positioned {
  inset: 0;
  margin: auto;
}

.inset-auto > .positioned {
  inset: auto;
}

.pa {
  position-area: bottom right;
}

.jac {
  justify-self: anchor-center;
}

.aac {
  align-self: anchor-center;
}

.valid-anchor > .positioned {
  position-anchor: --a;
}
</style>
<div id=insetValidAnchor class="abs-cb inset-auto valid-anchor">
  <div class=anchor></div>
  <div class="positioned pa"></div>
  <div class="positioned jac"></div>
  <div class="positioned aac"></div>
</div
><div id=insetInvalidAnchor class="abs-cb inset-auto">
  <div class=anchor></div>
  <div class="positioned pa"></div>
  <div class="positioned jac"></div>
  <div class="positioned aac"></div>
</div><br>
<div id=marginValidAnchor class="abs-cb margin-auto valid-anchor">
  <div class=anchor></div>
  <div class="positioned pa"></div>
  <div class="positioned jac"></div>
  <div class="positioned aac"></div>
</div
><div id=marginInvalidAnchor class="abs-cb margin-auto">
  <div class=anchor></div>
  <div class="positioned pa"></div>
  <div class="positioned jac"></div>
  <div class="positioned aac"></div>
</div>
<script>
function assert_zero(e, f, props, t) {
  test(() => {
    const s = getComputedStyle(e);
    for (const prop of props) {
      f(s.getPropertyValue(prop), "0px");
    }
  }, t);
}

const horizontalInsets = ['left', 'right'];
const verticalInsets = ['top', 'bottom'];
const allInsets = horizontalInsets.concat(verticalInsets);

assert_zero(insetValidAnchor.querySelector('.pa'), assert_equals, allInsets, "position-area with valid anchor sets insets to zero");
assert_zero(insetValidAnchor.querySelector('.jac'), assert_equals, horizontalInsets, "justify-self: anchor-center  with valid anchor sets insets to zero");
assert_zero(insetValidAnchor.querySelector('.aac'), assert_equals, verticalInsets, "align-self: anchor-center  with valid anchor sets insets to zero");

assert_zero(insetInvalidAnchor.querySelector('.pa'), assert_not_equals, allInsets, "position-area with invalid anchor does not set insets to zero");
assert_zero(insetInvalidAnchor.querySelector('.jac'), assert_not_equals, horizontalInsets, "justify-self: anchor-center with invalid anchor does not set insets to zero");
assert_zero(insetInvalidAnchor.querySelector('.aac'), assert_not_equals, verticalInsets, "align-self: anchor-center with invalid anchor does not set insets to zero");

const horizontalMargins = ['margin-left', 'margin-right'];
const verticalMargins = ['margin-top', 'margin-bottom'];
const allMargins = horizontalMargins.concat(verticalMargins);

assert_zero(marginValidAnchor.querySelector('.pa'), assert_equals, allMargins, "position-area with valid anchor sets margins to zero");
assert_zero(marginValidAnchor.querySelector('.jac'), assert_equals, horizontalMargins, "justify-self: anchor-center  with valid anchor sets margins to zero");
assert_zero(marginValidAnchor.querySelector('.aac'), assert_equals, verticalMargins, "align-self: anchor-center  with valid anchor sets margins to zero");

assert_zero(marginInvalidAnchor.querySelector('.pa'), assert_not_equals, allMargins, "position-area with invalid anchor does not set margins to zero");
assert_zero(marginInvalidAnchor.querySelector('.jac'), assert_not_equals, horizontalMargins, "justify-self: anchor-center with invalid anchor does not set margins to zero");
assert_zero(marginInvalidAnchor.querySelector('.aac'), assert_not_equals, verticalMargins, "align-self: anchor-center with invalid anchor does not set margins to zero");
</script>