10 background-color: #aaa;
17 .flexbox :nth-child(1) {
18 background-color: blue;
20 .flexbox :nth-child(2) {
21 background-color: green;
23 .flexbox :nth-child(3) {
24 background-color: red;
26 .flexbox :nth-child(4) {
27 background-color: yellow;
29 .flexbox :nth-child(5) {
30 background-color: purple;
32 .flexbox :nth-child(6) {
33 background-color: orange;
35 .flexbox :nth-child(7) {
36 background-color: lime;
38 .flexbox :nth-child(8) {
39 background-color: lightblue;
41 .flexbox :nth-child(9) {
42 background-color: darkred;
44 .flexbox :nth-child(10) {
45 background-color: gold;
47 .flexbox :nth-child(11) {
48 background-color: salmon;
52 if (window.layoutTestController)
53 layoutTestController.dumpAsText();
55 <script src="resources/flexbox.js"></script>
56 <body onload="checkFlexBoxen()">
58 <!-- stretch is the default flex-align so these flexitems should all have the same height. -->
60 <div data-expected-height="100" style="-webkit-flex: 1 0 0;"></div>
61 <div data-expected-height="100" style="-webkit-flex: 1 0 0; height: 100px"></div>
62 <div data-expected-height="100" style="-webkit-flex: 1 0 0;"></div>
66 <div data-expected-height="60" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 60px;"></div>
67 <div data-expected-height="120" data-offset-y="0" style="-webkit-flex: 1 0 0;"></div>
68 <div data-expected-height="60" data-offset-y="30" style="-webkit-flex: 1 0 0; height: 60px; margin: auto 0;"></div>
69 <div data-expected-height="0" data-offset-y="120" style="-webkit-flex: 1 0 0; margin: auto 0 0;"></div>
70 <div data-expected-height="0" data-offset-y="60" style="-webkit-flex: 1 0 0; margin: auto 0;"></div>
71 <div data-expected-height="100" data-offset-y="10" style="-webkit-flex: 1 0 0; height: 100px; margin: 10px 0;"></div>
72 <div data-expected-height="50" data-offset-y="20" style="-webkit-flex: 1 0 0; height: 50px; margin: 20px 0 10px;"></div>
73 <div data-expected-height="90" data-offset-y="20" style="-webkit-flex: 1 0 0; margin: 20px 0 10px;"></div>
74 <div data-expected-height="120" data-offset-y="0" style="-webkit-flex: 1 0 0;">
75 <!-- Since no parent has a fixed height, this div shrink-wraps. -->
76 <div data-expected-height="0" style="height: 100%; background-color:black"></div>
80 <div class="flexbox" style="-webkit-flex-align: start">
81 <div data-expected-height="0" data-offset-y="0" style="-webkit-flex: 1 0 0;"></div>
82 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
85 <div class="flexbox" style="-webkit-flex-align: end">
86 <div data-expected-height="0" data-offset-y="100" style="-webkit-flex: 1 0 0;"></div>
87 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
90 <div class="flexbox" style="-webkit-flex-align: center">
91 <div data-expected-height="0" data-offset-y="50" style="-webkit-flex: 1 0 0;"></div>
92 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
95 <div class="flexbox" style="-webkit-flex-align: baseline">
96 <div style="-webkit-flex: 1 0 0;"><div style="display:inline-block;"></div></div>
97 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
100 <div class="flexbox" style="-webkit-flex-align: stretch">
101 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0;"></div>
102 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
105 <div class="flexbox" style="-webkit-flex-align: start">
106 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: auto; -webkit-flex: 1 0 0; height: 100px;"></div>
107 <div data-expected-height="0" data-offset-y="0" style="-webkit-flex-item-align: auto; -webkit-flex: 1 0 0;"></div>
108 <div data-expected-height="0" data-offset-y="0" style="-webkit-flex-item-align: start; -webkit-flex: 1 0 0;"></div>
109 <div data-expected-height="0" data-offset-y="100" style="-webkit-flex-item-align: end; -webkit-flex: 1 0 0;"></div>
110 <div data-expected-height="0" data-offset-y="50" style="-webkit-flex-item-align: center; -webkit-flex: 1 0 0;"></div>
111 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0;"><div style="display:inline-block;"></div></div>
112 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0; margin: 20px;"><div style="display:inline-block;"></div></div>
113 <div data-offset-y="50" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0; margin: auto 0;"></div>
114 <div data-offset-y="30" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0; margin: 30px 0 auto;"><div style="display:inline-block;"></div></div>
115 <div data-offset-y="80" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0; margin: auto 0 20px;"></div>
116 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: stretch; -webkit-flex: 1 0 0;"></div>
119 <div class="flexbox" style="-webkit-flex-align: end">
120 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: auto; -webkit-flex: 1 0 0; height: 100px;"></div>
121 <div data-expected-height="0" data-offset-y="100" style="-webkit-flex-item-align: auto; -webkit-flex: 1 0 0;"></div>
122 <div data-expected-height="0" data-offset-y="0" style="-webkit-flex-item-align: start; -webkit-flex: 1 0 0;"></div>
123 <div data-expected-height="0" data-offset-y="100" style="-webkit-flex-item-align: end; -webkit-flex: 1 0 0;"></div>
124 <div data-expected-height="0" data-offset-y="50" style="-webkit-flex-item-align: center; -webkit-flex: 1 0 0;"></div>
125 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0;"><div style="display:inline-block;"></div></div>
126 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0; margin: 20px;"><div style="display:inline-block;"></div></div>
127 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: stretch; -webkit-flex: 1 0 0;"></div>
130 <div class="flexbox" style="-webkit-flex-align: center">
131 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: auto; -webkit-flex: 1 0 0; height: 100px;"></div>
132 <div data-expected-height="0" data-offset-y="50" style="-webkit-flex-item-align: auto; -webkit-flex: 1 0 0;"></div>
133 <div data-expected-height="0" data-offset-y="0" style="-webkit-flex-item-align: start; -webkit-flex: 1 0 0;"></div>
134 <div data-expected-height="0" data-offset-y="100" style="-webkit-flex-item-align: end; -webkit-flex: 1 0 0;"></div>
135 <div data-expected-height="0" data-offset-y="50" style="-webkit-flex-item-align: center; -webkit-flex: 1 0 0;"></div>
136 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0;"><div style="display:inline-block;"></div></div>
137 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0; margin: 20px;"><div style="display:inline-block;"></div></div>
138 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: stretch; -webkit-flex: 1 0 0;"></div>
141 <div class="flexbox" style="-webkit-flex-align: baseline">
142 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: start; -webkit-flex: 1 0 0; height: 100px;"></div>
143 <div data-offset-y="20" style="-webkit-flex-item-align: auto; -webkit-flex: 1 0 0;"><div style="display:inline-block;"></div></div>
144 <div data-expected-height="0" data-offset-y="0" style="-webkit-flex-item-align: start; -webkit-flex: 1 0 0;"></div>
145 <div data-expected-height="0" data-offset-y="100" style="-webkit-flex-item-align: end; -webkit-flex: 1 0 0;"></div>
146 <div data-expected-height="0" data-offset-y="50" style="-webkit-flex-item-align: center; -webkit-flex: 1 0 0;"></div>
147 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0;"><div style="display:inline-block;"></div></div>
148 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0; margin: 20px;"><div style="display:inline-block;"></div></div>
149 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: stretch; -webkit-flex: 1 0 0;"></div>
152 <div class="flexbox" style="-webkit-flex-align: stretch">
153 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: auto; -webkit-flex: 1 0 0; height: 100px;"></div>
154 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: auto; -webkit-flex: 1 0 0;"></div>
155 <div data-expected-height="0" data-offset-y="0" style="-webkit-flex-item-align: start; -webkit-flex: 1 0 0;"></div>
156 <div data-expected-height="0" data-offset-y="100" style="-webkit-flex-item-align: end; -webkit-flex: 1 0 0;"></div>
157 <div data-expected-height="0" data-offset-y="50" style="-webkit-flex-item-align: center; -webkit-flex: 1 0 0;"></div>
158 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0;"><div style="display:inline-block;"></div></div>
159 <div data-offset-y="20" style="-webkit-flex-item-align: baseline; -webkit-flex: 1 0 0; margin: 20px;"><div style="display:inline-block;"></div></div>
160 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex-item-align: stretch; -webkit-flex: 1 0 0;"></div>
163 <div class="flexbox" style="height: 100px;">
164 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 50px;"></div>
165 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0;"></div>
166 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100%;">
167 <div data-expected-height="100" style="height: 100%; background-color:black"></div>
171 <div class="flexbox" style="height: 100px;">
172 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 50px;"></div>
173 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0;"></div>
176 <div class="flexbox">
177 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 50px;"></div>
178 <div data-expected-height="70" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 70px;"></div>
179 <div data-expected-height="50" data-offset-y="50" style="-webkit-flex: 1 0 0; height: 50px; margin: auto 0 0;"></div>
180 <div data-expected-height="70" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 70px; margin: 0 0 auto"></div>
181 <div data-expected-height="70" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 70px;"></div>
182 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
185 <div class="flexbox">
186 <div data-expected-height="0" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start;"></div>
187 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; height: 50px;"></div>
188 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; height: 50px; margin: auto 0"></div>
189 <div data-expected-height="50" data-offset-y="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; height: 50px; margin: auto 0 0"></div>
190 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; height: 50px; margin: 0 0 auto"></div>
191 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; height: 50px; margin: 25px 0"></div>
192 <div data-expected-height="50" data-offset-y="20" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; height: 50px; margin: 20px 0 10px;"></div>
193 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
196 <div class="flexbox">
197 <div data-expected-height="0" data-offset-y="100" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end;"></div>
198 <div data-expected-height="50" data-offset-y="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; height: 50px;"></div>
199 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; height: 50px; margin: auto 0"></div>
200 <div data-expected-height="50" data-offset-y="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; height: 50px; margin: auto 0 0"></div>
201 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; height: 50px; margin: 0 0 auto"></div>
202 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; height: 50px; margin: 25px 0"></div>
203 <div data-expected-height="50" data-offset-y="40" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; height: 50px; margin: 20px 0 10px;"></div>
204 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
207 <div class="flexbox">
208 <div data-expected-height="0" data-offset-y="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center;"></div>
209 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 50px;"></div>
210 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 50px; margin: auto 0"></div>
211 <div data-expected-height="50" data-offset-y="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 50px; margin: auto 0 0"></div>
212 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 50px; margin: 0 0 auto"></div>
213 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 50px; margin: 0 0 auto"></div>
214 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 50px; margin: 25px 0"></div>
215 <div data-expected-height="50" data-offset-y="30" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 50px; margin: 20px 0 10px;"></div>
216 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
219 <div class="flexbox">
220 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; height: 50px; -webkit-writing-mode: vertical-rl;"></div>
221 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 50px; -webkit-writing-mode: vertical-rl;"></div>
222 <div data-expected-height="50" data-offset-y="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; height: 50px; -webkit-writing-mode: vertical-rl;"></div>
223 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 50px; -webkit-writing-mode: vertical-rl;"></div>
224 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; height: 50px; margin: auto 0; -webkit-writing-mode: vertical-rl;"></div>
225 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px; -webkit-writing-mode: vertical-rl;"></div>
228 <div class="flexbox">
229 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; height: 50px;"></div>
230 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 50px;"></div>
231 <div data-expected-height="50" data-offset-y="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; height: 50px;"></div>
232 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 50px;"></div>
233 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; height: 50px; margin: auto 0"></div>
234 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0;"></div>
235 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
238 <div class="flexbox">
239 <div data-expected-height="20" data-offset-y="20" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline; height: 20px;"></div>
240 <!-- FIXME: This looks like it might be positioned 10 pixels too high due the margin-bottom. All the boxes should have their bottoms aligned I think. -->
241 <div data-expected-height="10" data-offset-y="20" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline; height: 10px; margin: 20px 0 10px;"></div>
242 <div data-expected-height="10" data-offset-y="30" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline; height: 10px; margin: 20px 0 0;"></div>
243 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
246 <div class="flexbox" style="max-height: 20px">
247 <div data-expected-height="40" data-offset-y="-10" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; height: 40px;"></div>
248 <div data-expected-height="40" data-offset-y="-20" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; height: 40px;"></div>
249 <div data-expected-height="40" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 40px;"></div>
250 <div data-expected-height="20" data-offset-y="0" style="-webkit-flex: 1 0 0;"></div>
253 <div class="flexbox">
254 <div id="baseline1" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;">ahem</div>
255 <div id="baseline2" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><img src="../../fast/replaced/resources/1x1-blue.png" style="height: 50px;"></div>
256 <div data-expected-height="50" data-offset-y="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center;"><img src="../../fast/replaced/resources/1x1-blue.png" style="height: 50px; vertical-align: middle"></div>
257 <div id="baseline3" data-expected-height="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><img src="../../fast/replaced/resources/1x1-blue.png" style="height: 50px; vertical-align: middle"></div>
258 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
261 <div class="flexbox">
262 <div id="baseline4" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;">ahem</div>
263 <div id="baseline5" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><br><img src="../../fast/replaced/resources/1x1-blue.png" style="height: 50px;"></div>
264 <div data-expected-height="50" data-offset-y="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><img src="../../fast/replaced/resources/1x1-blue.png" style="height: 50px; vertical-align: middle"></div>
265 <div data-expected-height="100" data-offset-y="0" style="-webkit-flex: 1 0 0; height: 100px;"></div>
268 <div id="results"></div>
271 function additionalBaselineChecks()
273 var baseline1 = document.getElementById("baseline1");
274 var baseline2 = document.getElementById("baseline2");
275 var baseline3 = document.getElementById("baseline3");
276 logIfFalse(baseline1.offsetTop + baseline1.offsetHeight == baseline2.offsetTop + baseline2.offsetHeight,
277 "baseline1 and baseline2 should have the same baseline.");
278 logIfFalse(baseline3.offsetTop < 25,
279 "baseline3 should be above the center flex-item-aligned item.");
281 var baseline4 = document.getElementById("baseline4");
282 var baseline5 = document.getElementById("baseline5");
283 logIfFalse(baseline4.offsetTop == baseline5.offsetTop,
284 "baseline4 and baseline5 should be top aligned with each other.");
285 logIfFalse(baseline4.offsetTop > 0,
286 "baseline4 and baseline5 should be below baseline6.");
289 function logIfFalse(condition, msg)
292 document.getElementById("results").innerText += msg;
295 additionalBaselineChecks();