blob: 929843d3e772cd7977e900f90089da87370e579f [file] [log] [blame]
<style>
body {
margin: 0;
}
.flexbox {
display: -webkit-flex;
background-color: green;
height: 100px;
width: 100px;
margin: 10px;
}
.flexbox > * {
-webkit-flex: none;
}
.align-center {
-webkit-align-items: center;
}
.stretch {
-webkit-align-items: stretch;
}
.relative {
position: relative;
}
.flexbox > div {
width: 20px;
height: 20px;
}
.absolute {
position: absolute;
}
#placed-absolute {
top: 20px;
left: 20px;
}
.horizontal-tb {
-webkit-writing-mode: horizontal-tb;
}
.horizontal-bt {
-webkit-writing-mode: horizontal-bt;
}
.vertical-rl {
-webkit-writing-mode: vertical-rl;
}
.vertical-lr {
-webkit-writing-mode: vertical-lr;
}
.row {
-webkit-flex-flow: row;
}
.row-reverse {
-webkit-flex-flow: row-reverse;
}
.column {
-webkit-flex-flow: column;
}
.column-reverse {
-webkit-flex-flow: column-reverse;
}
.rtl {
direction: rtl;
}
.ltr {
direction: ltr;
}
.wrap {
-webkit-flex-wrap: wrap;
}
.wrap-reverse {
-webkit-flex-wrap: wrap-reverse;
}
.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="../../fast/js/resources/js-test-pre.js"></script>
<script src="../../resources/check-layout.js"></script>
<body onload="checkLayout('.flexbox')">
<div class='flexbox relative align-center'>
<div id='placed-absolute' class='absolute' data-offset-x=20 data-offset-y=20></div>
</div>
<div class='flexbox relative align-center'>
<div data-offset-x=0 data-offset-y=40></div>
<div class='absolute' data-offset-x=20 data-offset-y=0></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-center'>
<div data-offset-x=10 data-offset-y=40></div>
<div class='absolute' data-offset-x=30 data-offset-y=0></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=20></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=100 data-offset-y=100></div>
<div data-offset-x=10 data-offset-y=30></div>
<div class="absolute" data-offset-x=30 data-offset-y=50></div>
<div data-offset-x=30 data-offset-y=30></div>
<div class="absolute" data-offset-x=50 data-offset-y=50></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=100 data-offset-y=0></div>
<div class="absolute" style="margin: auto;" data-offset-x=100 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 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=20 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=100 data-offset-y=0></div>
<div style="width: 50px;" data-offset-x=0 data-offset-y=50></div>
<div class="absolute" data-offset-x=50 data-offset-y=50></div>
<div style="width: 50px;" data-offset-x=50 data-offset-y=50></div>
<div class="absolute" data-offset-x=100 data-offset-y=50></div>
</div>
<div class="flexbox wrap relative" style="-webkit-align-items: flex-end">
<div style="width: 100px;" data-offset-x=0 data-offset-y=30></div>
<div class="absolute" data-offset-x=100 data-offset-y=0></div>
<div style="width: 50px;" data-offset-x=0 data-offset-y=80></div>
<div class="absolute" data-offset-x=50 data-offset-y=50></div>
<div style="width: 50px;" data-offset-x=50 data-offset-y=80></div>
<div class="absolute" data-offset-x=100 data-offset-y=50></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)
shouldBe('beforePosition[key]', 'afterPosition[key]');
</script>
</body>