Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /css/css-flexbox/flexbox-flex-basis-content-004a.html - WPT Dashboard Interop Dashboard
<!DOCTYPE html>
<!--
Any copyright is dedicated to the Public Domain.
-->
<html>
<head>
<title>
CSS Test: Testing that explicit "flex-basis: content" is treated as
"max-content" when calculating flex base size
</title>
<meta charset="utf-8">
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
<link rel="match" href="flexbox-flex-basis-content-004-ref.html">
<style>
.container {
display: flex;
flex-direction: column;
align-items: flex-start;
/* flex container has an extremely-constrained height (and items will
overflow vertically). This is intentional, as part of stress-testing
item sizing. We add a large margin-bottom so that overflowing
items don't overlap between examples. */
height: 1px;
margin-bottom: 49px;
}
.item {
/* We give all flex items "flex-basis: content".
We also give them zero flex-grow, flex-shrink, and min-main-size, so
that the flex base size entirely determines the flex item's size. */
flex: 0 0 content;
min-height: 0;
border: 2px solid teal;
}
ib {
display: inline-block;
background: blue;
border: 1px solid gray;
width: 15px;
height: 10px;
}
float {
float: left;
background: fuchsia;
border: 1px solid gray;
width: 15px;
height: 10px;
}
canvas {
background: brown;
border: 1px solid gray;
}
.innerFlex {
display: flex;
flex-direction: column;
}
innerItem {
background: salmon;
border: 1px solid gray;
height: 10px;
width: 15px;
flex: none;
}
</style>
</head>
<body>
<!-- This test exists for symmetry with the previous set of tests
(flexbox-flex-basis-content-003*). Those previous tests check how
"flex-basis:content" is resolved to a flex base size, in the inline axis,
when the container's size is constrained in that axis. This test does the
same, but for the *block* axis, using flex-direction:column. As with the
previous set of tests, the expectation here is that we should use the
item's max-content size as its flex base size. Note that there's a bit
less subtlety here because intrinsic sizes (min-content, max-content) are
typically all the same in the block axis.
-->
<!-- Flex item has several inline-blocks
(no spaces, to avoid any text-layout dependency): -->
<div class="container">
<div class="item"><ib></ib><ib></ib><ib></ib></div>
</div>
<!-- Flex item has several floats: -->
<div class="container">
<div class="item">
<float></float>
<float></float>
<float></float>
</div>
</div>
<!-- Flex item has several inline replaced elements:
(no spaces, to avoid any text-layout dependency): -->
<div class="container">
<div class="item">
<canvas width="15" height="10"></canvas
><canvas width="15" height="10"></canvas
><canvas width="15" height="10"></canvas>
</div>
</div>
<!-- Flex item *is* a replaced element: -->
<div class="container">
<canvas class="item" width="25" height="10"></canvas>
</div>
<!-- Flex item is itself a flex container: -->
<div class="container">
<div class="item innerFlex">
<innerItem></innerItem>
<innerItem></innerItem>
<innerItem></innerItem>
</div>
</div>
<!-- Flex item is itself a multi-line flex container: -->
<div class="container">
<div class="item innerFlex" style="flex-wrap: wrap">
<innerItem></innerItem>
<innerItem></innerItem>
<innerItem></innerItem>
</div>
</div>
</body>
</html>