6 background-color: pink;
7 outline:
1px solid black;
12 background-color: grey;
26 -webkit-writing-mode: horizontal-tb;
29 -webkit-writing-mode: horizontal-bt;
32 -webkit-writing-mode: vertical-rl;
35 -webkit-writing-mode: vertical-lr;
41 flex-flow: row-reverse;
47 flex-flow: column-reverse;
50 margin:
10px
20px
30px
40px;
53 margin:
13px
2px
17px
8px;
56 -webkit-margin-before:
10px;
57 -webkit-margin-after:
30px;
58 -webkit-margin-start:
40px;
59 -webkit-margin-end:
20px;
62 -webkit-margin-before:
13px;
63 -webkit-margin-after:
17px;
64 -webkit-margin-start:
8px;
65 -webkit-margin-end:
2px;
67 .flexbox
> :nth-child(
1) {
68 background-color: blue;
70 .flexbox
> :nth-child(
2) {
71 background-color: green;
73 .flexbox
> :nth-child(
3) {
74 background-color: red;
77 <script src=
"../../resources/check-layout.js"></script>
78 <body onload=
"checkLayout('.flexbox')">
81 function positionAsString(position
)
83 return 'data-offset-x="' + position
[0] + '" data-offset-y="' + position
[1] + '"';
86 function asString(expectations
)
88 return 'data-expected-width="' + expectations
[0] + '" data-expected-height="' + expectations
[1] + '" ' + positionAsString(expectations
.slice(2, 4));
91 var physicalContainerSize
= [160, 140];
92 var physicalFlexBoxPosition
= [40, 10];
94 var physicalExpectations
= {
97 container
: physicalContainerSize
,
98 flexbox
: physicalFlexBoxPosition
,
99 column
: [20, 70, 118, 23],
100 row
: [90, 20, 48, 23]
103 container
: physicalContainerSize
,
104 flexbox
: physicalFlexBoxPosition
,
105 column
: [20, 70, 48, 23],
106 row
: [90, 20, 48, 23]
111 container
: physicalContainerSize
,
112 flexbox
: physicalFlexBoxPosition
,
113 column
: [20, 70, 118, 23],
114 row
: [90, 20, 48, 73]
117 container
: physicalContainerSize
,
118 flexbox
: physicalFlexBoxPosition
,
119 column
: [20, 70, 48, 23],
120 row
: [90, 20, 48, 73]
125 container
: physicalContainerSize
,
126 flexbox
: physicalFlexBoxPosition
,
127 column
: [90, 20, 48, 73],
128 row
: [20, 70, 48, 23]
131 container
: physicalContainerSize
,
132 flexbox
: physicalFlexBoxPosition
,
133 column
: [90, 20, 48, 23],
134 row
: [20, 70, 48, 23]
139 container
: physicalContainerSize
,
140 flexbox
: physicalFlexBoxPosition
,
141 column
: [90, 20, 48, 73],
142 row
: [20, 70, 118, 23]
145 container
: physicalContainerSize
,
146 flexbox
: physicalFlexBoxPosition
,
147 column
: [90, 20, 48, 23],
148 row
: [20, 70, 118, 23]
153 var logicalExpectations
= {
156 container
: [160, 140],
158 column
: [20, 70, 92, 23],
159 row
: [90, 20, 22, 23]
162 container
: [160, 140],
164 column
: [20, 70, 48, 23],
165 row
: [90, 20, 48, 23]
170 container
: [160, 140],
172 column
: [20, 70, 92, 47],
173 row
: [90, 20, 22, 97]
176 container
: [160, 140],
178 column
: [20, 70, 48, 47],
179 row
: [90, 20, 48, 97]
184 container
: [140, 160],
186 column
: [70, 20, 23, 92],
187 row
: [20, 90, 23, 22]
190 container
: [140, 160],
192 column
: [70, 20, 23, 48],
193 row
: [20, 90, 23, 48]
198 container
: [140, 160],
200 column
: [70, 20, 47, 92],
201 row
: [20, 90, 97, 22]
204 container
: [140, 160],
206 column
: [70, 20, 47, 48],
207 row
: [20, 90, 97, 48]
212 var writingModes
= ['horizontal-tb', 'horizontal-bt', 'vertical-lr', 'vertical-rl'];
213 var flexFlows
= ['row', 'column', 'row-reverse', 'row-reverse'];
214 var directions
= ['rtl', 'ltr'];
215 var marginTypes
= ['physical', 'logical'];
217 writingModes
.forEach(function(writingMode
) {
218 flexFlows
.forEach(function(flexFlow
) {
219 directions
.forEach(function(direction
) {
220 marginTypes
.forEach(function(marginType
) {
221 var flexboxClassName
= writingMode
+ ' ' + direction
+ ' ' + flexFlow
+ ' ' + marginType
;
222 var title
= document
.createElement('div');
223 title
.className
= 'title';
224 title
.innerHTML
= flexboxClassName
;
225 document
.body
.appendChild(title
);
227 var expectations
= (marginType
== 'physical') ? physicalExpectations
: logicalExpectations
;
228 expectations
= expectations
[writingMode
][direction
];
229 var flexboxExpectations
= positionAsString(expectations
.flexbox
);
231 var flexItemExpectations
= asString(expectations
[flexFlow
.replace("-reverse", "")]);
233 var container
= document
.createElement('div');
234 container
.className
= 'container';
235 container
.setAttribute('data-expected-width', expectations
.container
[0]);
236 container
.setAttribute('data-expected-height', expectations
.container
[1]);
238 container
.innerHTML
= '<div class="flexbox ' + flexboxClassName
+ '" ' + flexboxExpectations
+ '>\n' +
239 '<div style="flex: 1 auto; height: 20px; width: 20px;" ' + flexItemExpectations
+ '></div>\n' +
242 document
.body
.appendChild(container
);