Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / css3 / flexbox / flex-flow-orientations.html
blob8b513e1e0fc6c0a63248ec5ab32f0341ccca4f9e
1 <!DOCTYPE html>
2 <html>
3 <style>
4 .container {
5 position: relative;
6 background-color: pink;
7 outline: 1px solid black;
8 display: inline-block;
10 .flexbox {
11 display: flex;
12 background-color: grey;
13 width: 100px;
14 height: 100px;
16 .flexbox > * {
17 flex: none;
19 .title {
20 margin-top: 1em;
22 .ltr {
23 direction: ltr;
25 .rtl {
26 direction: rtl;
28 .horizontal-tb {
29 -webkit-writing-mode: horizontal-tb;
31 .horizontal-bt {
32 -webkit-writing-mode: horizontal-bt;
34 .vertical-rl {
35 -webkit-writing-mode: vertical-rl;
37 .vertical-lr {
38 -webkit-writing-mode: vertical-lr;
40 .row {
41 flex-flow: row;
43 .row-reverse {
44 flex-flow: row-reverse;
46 .column {
47 flex-flow: column;
49 .column-reverse {
50 flex-flow: column-reverse;
52 .flexbox > :nth-child(1) {
53 background-color: blue;
55 .flexbox > :nth-child(2) {
56 background-color: green;
58 .flexbox > :nth-child(3) {
59 background-color: red;
61 </style>
62 <script src="../../resources/check-layout.js"></script>
63 <body onload="checkLayout('.flexbox')">
65 <script>
66 function asString(position)
68 return 'data-offset-x="' + position[0] + '" data-offset-y="' + position[1] + '"';
71 var expectations = {
72 'horizontal-tb': {
73 column: {
74 rtl: [[80, 0], [80, 20]],
75 ltr: [[0, 0], [0, 20]]
77 'column-reverse': {
78 rtl: [[80, 80], [80, 60]],
79 ltr: [[0, 80], [0, 60]]
81 row: {
82 rtl: [[80, 0], [60, 0]],
83 ltr: [[0, 0], [20, 0]]
85 'row-reverse': {
86 rtl: [[0, 0], [20, 0]],
87 ltr: [[80, 0], [60, 0]]
90 'horizontal-bt': {
91 column: {
92 rtl: [[80, 80], [80, 60]],
93 ltr: [[0, 80], [0, 60]]
95 'column-reverse': {
96 rtl: [[80, 0], [80, 20]],
97 ltr: [[0, 0], [0, 20]]
99 row: {
100 rtl: [[80, 80], [60, 80]],
101 ltr: [[0, 80], [20, 80]]
103 'row-reverse': {
104 rtl: [[0, 80], [20, 80]],
105 ltr: [[80, 80], [60, 80]]
108 'vertical-lr': {
109 column: {
110 rtl: [[0, 80], [20, 80]],
111 ltr: [[0, 0], [20, 0]]
113 'column-reverse': {
114 rtl: [[80, 80], [60, 80]],
115 ltr: [[80, 0], [60, 0]]
117 row: {
118 rtl: [[0, 80], [0, 60]],
119 ltr: [[0, 0], [0, 20]]
121 'row-reverse': {
122 rtl: [[0, 0], [0, 20]],
123 ltr: [[0, 80], [0, 60]]
126 'vertical-rl': {
127 column: {
128 rtl: [[80, 80], [60, 80]],
129 ltr: [[80, 0], [60, 0]]
131 'column-reverse': {
132 rtl: [[0, 80], [20, 80]],
133 ltr: [[0, 0], [20, 0]]
135 row: {
136 rtl: [[80, 80], [80, 60]],
137 ltr: [[80, 0], [80, 20]]
139 'row-reverse': {
140 rtl: [[80, 0], [80, 20]],
141 ltr: [[80, 80], [80, 60]]
146 var writingModes = ['horizontal-tb', 'horizontal-bt', 'vertical-lr', 'vertical-rl'];
147 var flexFlows = ['row', 'column', 'row-reverse', 'column-reverse'];
148 var directions = ['rtl', 'ltr'];
150 function physicalWritingMode(writingMode, flexFlow, direction)
152 if (flexFlow.indexOf('column') == -1)
153 return writingMode;
155 var isReverse = flexFlow.indexOf('reverse') != -1;
156 switch (writingMode) {
157 case 'horizontal-tb':
158 case 'horizontal-bt':
159 return isReverse ? 'vertical-rl' : 'vertical-lr';
160 case 'vertical-lr':
161 case 'vertical-rl':
162 return isReverse ? 'horizontal-bt' : 'horizontal-tb';
166 writingModes.forEach(function(writingMode) {
167 flexFlows.forEach(function(flexFlow) {
168 directions.forEach(function(direction) {
169 var flexboxClassName = writingMode + ' ' + direction + ' ' + flexFlow;
170 var title = document.createElement('div');
171 title.className = 'title';
172 title.innerHTML = flexboxClassName;
173 document.body.appendChild(title);
176 var flexItemExpectations = expectations[writingMode][flexFlow][direction];
178 var container = document.createElement('div');
179 container.className = 'container';
180 container.innerHTML = '<div class="flexbox ' + flexboxClassName + '">\n' +
181 '<div style="width: 20px; height: 20px;" ' + asString(flexItemExpectations[0]) + '></div>\n' +
182 '<div style="width: 20px; height: 20px;" ' + asString(flexItemExpectations[1]) + '></div>\n' +
183 '</div>';
185 document.body.appendChild(container);
189 </script>
190 </body>
191 </html>