File: flex-basis-013.html

package info (click to toggle)
thunderbird 1%3A143.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 4,703,968 kB
  • sloc: cpp: 7,770,492; javascript: 5,943,842; ansic: 3,918,754; python: 1,418,263; xml: 653,354; asm: 474,045; java: 183,079; sh: 111,238; makefile: 20,410; perl: 14,359; objc: 13,059; yacc: 4,583; pascal: 3,405; lex: 1,720; ruby: 999; exp: 762; sql: 715; awk: 580; php: 436; lisp: 430; sed: 69; csh: 10
file content (80 lines) | stat: -rw-r--r-- 2,240 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<!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>