2e7ca09df7dfca268037c97f2f8b95de6bc85570
[WebKit-https.git] / LayoutTests / css3 / flexbox / flex-align-vertical-writing-mode.html
1 <!DOCTYPE html>
2 <html>
3 <style>
4 body {
5     margin: 0;
6 }
7 .flexbox {
8     height: 600px;
9     display: -webkit-flex;
10     background-color: #aaa;
11     position: relative;
12     -webkit-writing-mode: vertical-rl;
13 }
14 .flexbox div {
15     border: 0;
16 }
17
18 .flexbox :nth-child(1) {
19     background-color: blue;
20 }
21 .flexbox :nth-child(2) {
22     background-color: green;
23 }
24 .flexbox :nth-child(3) {
25     background-color: red;
26 }
27 .flexbox :nth-child(4) {
28     background-color: yellow;
29 }
30 .flexbox :nth-child(5) {
31     background-color: purple;
32 }
33 .flexbox :nth-child(6) {
34     background-color: orange;
35 }
36 .flexbox :nth-child(7) {
37     background-color: lime;
38 }
39 </style>
40 <script>
41 if (window.layoutTestController)
42     layoutTestController.dumpAsText();
43 </script>
44 <script src="resources/flexbox.js"></script>
45 <body onload="checkFlexBoxen()">
46
47 <!-- stretch is the default flex-align so these flexitems should all have the same height. -->
48 <div class="flexbox">
49   <div data-expected-width="100" style="-webkit-flex: 1 0 0;"></div>
50   <div data-expected-width="100" style="-webkit-flex: 1 0 0; width: 100px"></div>
51   <div data-expected-width="100" style="-webkit-flex: 1 0 0;"></div>
52 </div>
53
54 <div class="flexbox">
55   <div data-expected-width="60"  data-offset-x="60" style="-webkit-flex: 1 0 0; width: 60px; margin: auto;"></div>
56   <div data-expected-width="120" data-offset-x="0" style="-webkit-flex: 1 0 0; margin: 0 auto;"></div>
57   <div data-expected-width="100" data-offset-x="10" style="-webkit-flex: 1 0 0; width: 100px; margin: 0 10px;"></div>
58   <div data-expected-width="50" data-offset-x="50" style="-webkit-flex: 1 0 0; width: 50px; margin: 0 20px 0 10px;"></div>
59   <div data-expected-width="90" data-offset-x="10" style="-webkit-flex: 1 0 0; margin: 0 20px 0 10px;"></div>
60   <div data-expected-width="120" data-offset-x="0" style="-webkit-flex: 1 0 0;">
61     <!-- Since no parent has a fixed height, this div shrink-wraps. -->
62     <div data-expected-width="0" style="width: 100%; background-color:black"></div>
63   </div>
64 </div>
65
66 <div class="flexbox" style="width: 100px;">
67   <div data-expected-width="50"  data-offset-x="50" style="-webkit-flex: 1 0 0; width: 50px;"></div>
68   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0;"></div>
69   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100%;">
70     <div data-expected-width="100" style="width: 100%; background-color:black"></div>
71   </div>
72 </div>
73
74 <div class="flexbox" style="width: 100px;">
75   <div data-expected-width="50"  data-offset-x="50" style="-webkit-flex: 1 0 0; width: 50px;"></div>
76   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0;"></div>
77 </div>
78
79 <div class="flexbox">
80   <div data-expected-width="0" data-offset-x="100" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start;"></div>
81   <div data-expected-width="50" data-offset-x="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; width: 50px;"></div>
82   <div data-expected-width="50" data-offset-x="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; width: 50px; margin: 0 auto"></div>
83   <div data-expected-width="50" data-offset-x="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; width: 50px; margin: auto 0 0"></div>
84   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; width: 50px; margin: 0 25px"></div>
85   <div data-expected-width="50" data-offset-x="30" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; width: 50px; margin: 0 20px 0 10px;"></div>
86   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px;"></div>
87 </div>
88
89 <div class="flexbox">
90   <div data-expected-width="0" data-offset-x="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end;"></div>
91   <div data-expected-width="50" data-offset-x="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; width: 50px;"></div>
92   <div data-expected-width="50" data-offset-x="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; width: 50px; margin: 0 auto"></div>
93   <div data-expected-width="50" data-offset-x="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; width: 50px; margin: auto 0 0"></div>
94   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; width: 50px; margin: 0 25px"></div>
95   <div data-expected-width="50" data-offset-x="10" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; width: 50px; margin: 0 20px 0 10px;"></div>
96   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px;"></div>
97 </div>
98
99 <div class="flexbox">
100   <div data-expected-width="0" data-offset-x="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center;"></div>
101   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; width: 50px;"></div>
102   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; width: 50px; margin: 0 auto"></div>
103   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; width: 50px; margin: auto 0 0"></div>
104   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; width: 50px; margin: 0 25px"></div>
105   <div data-expected-width="50" data-offset-x="20" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; width: 50px; margin: 0 20px 0 10px;"></div>
106   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px;"></div>
107 </div>
108
109 <div class="flexbox">
110   <div data-expected-width="50" data-offset-x="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; width: 50px;"></div>
111   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; width: 50px;"></div>
112   <div data-expected-width="50" data-offset-x="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; width: 50px;"></div>
113   <div data-expected-width="50" data-offset-x="50" style="-webkit-flex: 1 0 0; width: 50px; margin: auto 0"></div>
114   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0;"></div>
115   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px;"></div>
116 </div>
117
118 <div class="flexbox">
119   <div data-expected-width="50" data-offset-x="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: start; width: 50px; -webkit-writing-mode: horizontal-tb;"></div>
120   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center; width: 50px; -webkit-writing-mode: horizontal-tb;"></div>
121   <div data-expected-width="50" data-offset-x="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: end; width: 50px; -webkit-writing-mode: horizontal-tb;"></div>
122   <div data-expected-width="50" data-offset-x="50" style="-webkit-flex: 1 0 0; width: 50px; margin: auto 0; -webkit-writing-mode: horizontal-tb;"></div>
123   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px; -webkit-writing-mode: horizontal-tb;"></div>
124 </div>
125
126 <div class="flexbox">
127   <div data-expected-width="20" data-offset-x="60" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline; width: 20px;"></div>
128   <div data-expected-width="10" data-offset-x="70" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline; width: 10px; margin: 0 20px 0 10px;"></div>
129   <div data-expected-width="10" data-offset-x="60" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline; width: 10px; margin: 0 20px 0 0;"></div>
130   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px;"></div>
131 </div>
132
133 <div class="flexbox">
134   <div id="baseline1" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;">ahem</div>
135   <div id="baseline2" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px;"></div>
136   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center;"><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px; vertical-align: middle"></div>
137   <div id="baseline3" data-expected-width="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px; vertical-align: middle"></div>
138   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px;"></div>
139 </div>
140
141 <div class="flexbox">
142   <div id="baseline4" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;">ahem</div>
143   <div id="baseline5" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><br><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px;"></div>
144   <div data-expected-width="50" data-offset-x="50" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px; vertical-align: middle"></div>
145   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px;"></div>
146 </div>
147
148 <div class="flexbox" style="-webkit-writing-mode: vertical-lr">
149   <div id="baseline6" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;">ahem</div>
150   <div id="baseline7" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px;"></div>
151   <div data-expected-width="50" data-offset-x="25" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: center;"><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px; vertical-align: middle"></div>
152   <div data-expected-width="50" data-offset-x="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px; vertical-align: middle"></div>
153   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px;"></div>
154 </div>
155
156 <div class="flexbox" style="-webkit-writing-mode: vertical-lr">
157   <div id="baseline8" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;">ahem</div>
158   <div id="baseline9" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><br><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px;"></div>
159   <div data-expected-width="50" data-offset-x="0" style="-webkit-flex: 1 0 0; -webkit-flex-item-align: baseline;"><img src="../../fast/replaced/resources/1x1-blue.png" style="width: 50px; vertical-align: middle"></div>
160   <div data-expected-width="100" data-offset-x="0" style="-webkit-flex: 1 0 0; width: 100px;"></div>
161 </div>
162
163 <div id="results"></div>
164
165 <script>
166 function additionalBaselineChecks()
167 {
168     var baseline1 = document.getElementById("baseline1");
169     var baseline2 = document.getElementById("baseline2");
170     var baseline3 = document.getElementById("baseline3");
171     logIfFalse(baseline1.offsetLeft == baseline2.offsetLeft,
172                "baseline1 and baseline2 should have the same baseline.");
173     logIfFalse(baseline3.offsetLeft + baseline3.offsetWidth > 75,
174                "baseline3 should be above the center flex-aligned item.");
175
176     var baseline4 = document.getElementById("baseline4");
177     var baseline5 = document.getElementById("baseline5");
178     logIfFalse(baseline4.offsetLeft + baseline4.offsetWidth == baseline5.offsetLeft + baseline5.offsetWidth,
179                "baseline4 and baseline5 should be right aligned with each other.");
180     logIfFalse(baseline4.offsetLeft + baseline4.offsetWidth < 100,
181                "baseline4 and baseline5 should be below baseline6.");
182
183     var baseline6 = document.getElementById("baseline6");
184     var baseline7 = document.getElementById("baseline7");
185     logIfFalse(baseline6.offsetLeft == baseline7.offsetLeft,
186                "baseline6 and baseline7 should have the same baseline.");
187
188     var baseline8 = document.getElementById("baseline8");
189     var baseline9 = document.getElementById("baseline9");
190     logIfFalse(baseline8.offsetLeft == baseline9.offsetLeft,
191                "baseline8 and baseline9 should be left aligned with each other.");
192
193 }
194
195 function logIfFalse(condition, msg)
196 {
197     if (!condition)
198         document.getElementById("results").innerHTML += msg + "<br/>";
199 }
200
201 additionalBaselineChecks();
202 </script>
203
204 </body>
205 </html>