Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
.flex {
display: flex;
flex-direction: column;
flex-wrap: wrap;
font: 20px/1 Ahem;
}
</style>
<!-- Test 1: single grow item fills to container height -->
<div class="flex" style="max-height: 100px; width: 100px">
<div id="t1" style="width: 50px; height: 50px; flex-grow: 1"></div>
<div style="width: 50px; height: 100px"></div>
</div>
<!-- Test 2: max-height on item is respected -->
<div class="flex" style="max-height: 100px; width: 150px">
<div id="t2a" style="width: 50px; height: 20px; flex-grow: 1; max-height: 40px"></div>
<div id="t2b" style="width: 50px; height: 30px; flex-grow: 1"></div>
<div style="width: 50px; height: 100px"></div>
</div>
<!-- Test 3: proportional grow -->
<div class="flex" style="max-height: 100px; width: 150px">
<div id="t3a" style="width: 50px; height: 10px; flex-grow: 2"></div>
<div id="t3b" style="width: 50px; height: 10px; flex-grow: 1"></div>
<div style="width: 50px; height: 100px"></div>
</div>
<script>
test(function() {
assert_equals(document.getElementById("t1").offsetHeight, 100,
"Item should grow from 50px to 100px to fill the line");
}, "Single flex-grow item fills multi-line column container height");
test(function() {
assert_equals(document.getElementById("t2a").offsetHeight, 40,
"Item should grow but be clamped by max-height: 40px");
assert_equals(document.getElementById("t2b").offsetHeight, 60,
"Remaining space should go to the other grow item");
}, "flex-grow respects max-height on individual items");
test(function() {
var a = document.getElementById("t3a").offsetHeight;
var b = document.getElementById("t3b").offsetHeight;
assert_equals(a + b, 100, "Items should fill 100px total");
assert_greater_than(a, b, "Item with flex-grow: 2 should be taller");
}, "flex-grow distributes space proportionally");
</script>