| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>CSS Test: flex base size that depends on cross size</title> |
| <link rel="author" title="Oriol Brufau" href="obrufau@igalia.com"> |
| <link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-base-size"> |
| <link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#definite-sizes"> |
| <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/11791"> |
| <meta name="assert" content="The flex item has a definite cross size of 100px |
| because it stretches. So the canvas can resolve its percentage against that, |
| and thus the intrinsic flex basis results in a flex base size of 100px."> |
| |
| <style> |
| .container { |
| display: inline-flex; |
| vertical-align: top; |
| width: 50px; |
| height: 50px; |
| background: red; |
| margin: 5px; |
| } |
| .container.column { |
| flex-direction: column; |
| } |
| .item { |
| min-width: 0; |
| min-height: 0; |
| background: green; |
| } |
| .container.column .stretch-size { |
| width: -moz-available; |
| width: -webkit-fill-available; |
| width: stretch; |
| } |
| .container.row .stretch-size { |
| height: -moz-available; |
| height: -webkit-fill-available; |
| height: stretch; |
| } |
| .container.column canvas { |
| display: block; |
| width: 100%; |
| } |
| .container.row canvas { |
| display: block; |
| height: 100%; |
| } |
| </style> |
| |
| <div id="tests"></div> |
| <div id="log"></div> |
| |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/check-layout-th.js"></script> |
| <script> |
| let canvas = document.createElement("canvas"); |
| canvas.width = canvas.height = "5"; |
| |
| let item = document.createElement("div"); |
| item.appendChild(canvas); |
| item.dataset.expectedWidth = item.dataset.expectedHeight = "50"; |
| |
| let container = document.createElement("div"); |
| container.appendChild(item); |
| |
| let tests = document.getElementById("tests"); |
| |
| for (let direction of ["row", "column"]) { |
| container.className = "container " + direction; |
| for (let stretchSize of [false, true]) { |
| item.className = "item" + (stretchSize ? " stretch-size" : ""); |
| for (let flexBasis of ["auto", "content", "min-content", "fit-content", "max-content"]) { |
| item.style.flexBasis = flexBasis; |
| tests.appendChild(container.cloneNode(true)); |
| } |
| } |
| } |
| |
| checkLayout(".container"); |
| </script> |