| <!DOCTYPE html> |
| <html> |
| <link href="resources/flexbox.css" rel="stylesheet"> |
| <style> |
| body { |
| margin: 0; |
| } |
| .flexbox { |
| background-color: green; |
| height: 100px; |
| width: 100px; |
| margin: 10px; |
| } |
| .flexbox > * { |
| flex: none; |
| } |
| .relative { |
| position: relative; |
| } |
| .flexbox > div { |
| width: 20px; |
| height: 20px; |
| } |
| .absolute { |
| position: absolute; |
| } |
| #placed-absolute { |
| top: 20px; |
| left: 20px; |
| } |
| |
| .rtl { |
| direction: rtl; |
| } |
| .ltr { |
| direction: ltr; |
| } |
| |
| .flexbox :nth-child(1) { |
| background-color: blue; |
| } |
| .flexbox :nth-child(2) { |
| background-color: yellow; |
| } |
| .flexbox :nth-child(3) { |
| background-color: salmon; |
| } |
| .flexbox :nth-child(4) { |
| background-color: grey; |
| } |
| .flexbox :nth-child(5) { |
| background-color: red; |
| } |
| .flexbox :nth-child(6) { |
| background-color: orange; |
| } |
| .flexbox :nth-child(7) { |
| background-color: purple; |
| } |
| </style> |
| |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="../../resources/check-layout-th.js"></script> |
| |
| <body onload="checkLayout('.flexbox')"> |
| <div id=log></div> |
| |
| <div class='flexbox relative align-items-center'> |
| <div id='placed-absolute' class='absolute' data-offset-x=20 data-offset-y=20></div> |
| </div> |
| |
| <div class='flexbox relative align-items-center'> |
| <div data-offset-x=0 data-offset-y=40></div> |
| <div class='absolute' data-offset-x=0 data-offset-y=40></div> |
| <div data-offset-x=20 data-offset-y=40></div> |
| <div class="absolute" style="top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> |
| </div> |
| |
| <div class="relative"> |
| <div class='flexbox align-items-center'> |
| <div data-offset-x=10 data-offset-y=40></div> |
| <div class='absolute' data-offset-x=10 data-offset-y=40></div> |
| <div data-offset-x=30 data-offset-y=40></div> |
| <div class="absolute" style="top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> |
| </div> |
| </div> |
| |
| <div class='flexbox relative column rtl'> |
| <div data-offset-x=80 data-offset-y=0></div> |
| <div class='absolute' data-offset-x=80 data-offset-y=0></div> |
| <div data-offset-x=80 data-offset-y=20></div> |
| <div class="absolute" style="top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> |
| </div> |
| |
| <div class="relative"> |
| <div class='flexbox wrap-reverse'> |
| <div style="width:90px" data-offset-x=10 data-offset-y=80></div> |
| <div class="absolute" data-offset-x=10 data-offset-y=80></div> |
| <div data-offset-x=10 data-offset-y=30></div> |
| <div class="absolute" data-offset-x=10 data-offset-y=80></div> |
| <div data-offset-x=30 data-offset-y=30></div> |
| <div class="absolute" data-offset-x=10 data-offset-y=80></div> |
| <div class="absolute" style="top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> |
| </div> |
| </div> |
| |
| <div class='flexbox relative'> |
| <div style="margin: auto;" data-offset-x=40 data-offset-y=40></div> |
| <div class="absolute" style="margin: auto;" data-offset-x=0 data-offset-y=0></div> |
| <div class="absolute" style="margin: auto;" data-offset-x=0 data-offset-y=0></div> |
| <div class="absolute" style="margin: auto; top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> |
| </div> |
| |
| <div class='flexbox align-items-stretch relative'> |
| <div style="height: auto" data-offset-x=0 data-offset-y=0 data-expected-height=100></div> |
| <div class="absolute" style="height: auto" data-offset-x=0 data-offset-y=0 data-expected-height=0></div> |
| <div class="absolute" style="height: auto; top: 5px; left: 5px" data-offset-x=5 data-offset-y=5 data-expected-height=0></div> |
| </div> |
| |
| <div class="flexbox wrap relative"> |
| <div style="width: 100px;" data-offset-x=0 data-offset-y=0></div> |
| <div class="absolute" data-offset-x=0 data-offset-y=0></div> |
| <div style="width: 50px;" data-offset-x=0 data-offset-y=50></div> |
| <div class="absolute" data-offset-x=0 data-offset-y=0></div> |
| <div style="width: 50px;" data-offset-x=50 data-offset-y=50></div> |
| <div class="absolute" data-offset-x=0 data-offset-y=0></div> |
| </div> |
| |
| <div class="flexbox wrap relative align-items-flex-end"> |
| <div style="width: 100px;" data-offset-x=0 data-offset-y=30></div> |
| <div class="absolute" data-offset-x=0 data-offset-y=80></div> |
| <div style="width: 50px;" data-offset-x=0 data-offset-y=80></div> |
| <div class="absolute" data-offset-x=0 data-offset-y=80></div> |
| <div style="width: 50px;" data-offset-x=50 data-offset-y=80></div> |
| <div class="absolute" data-offset-x=0 data-offset-y=80></div> |
| </div> |
| |
| |
| <script> |
| var absolute = document.getElementById('placed-absolute'); |
| var beforePosition = absolute.getBoundingClientRect(); |
| document.querySelector('.flexbox').style.height = '101px'; |
| var afterPosition = absolute.getBoundingClientRect(); |
| |
| // Positioned element should not change position when the height of it's parent flexbox is changed. |
| for (key in beforePosition) { |
| test(function() { |
| assert_equals(beforePosition[key], afterPosition[key]); |
| }, 'position of ' + key); |
| } |
| </script> |
| </body> |
| </html> |