grid-content-alignment-auto-sized-tracks-001.html (9670B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>CSS Grid Layout Test: content alignment and auto sized tracks.</title> 5 <link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com"> 6 <link rel="help" href="https://drafts.csswg.org/css-grid/#alignment"> 7 <link rel="help" href="https://drafts.csswg.org/css-grid-1/#auto-tracks"> 8 <link rel="help" href="https://drafts.csswg.org/css-align-3/#distribution-values"> 9 <link rel="help" href="https://drafts.csswg.org/css-align-3/#content-distribution"> 10 <link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=376823"> 11 <link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=249451"> 12 <link rel="stylesheet" href="/fonts/ahem.css"> 13 <link rel="stylesheet" href="/css/support/alignment.css"> 14 <meta name="assert" content="Test that 'stretch' value for content alignment properties is applied only on 'auto-sized' tracks, which are the ones with an 'auto' max sizing function." /> 15 16 <style> 17 body { 18 margin: 0px; 19 } 20 21 .grid { 22 display: grid; 23 background-color: grey; 24 position: relative; 25 } 26 27 .definiteSize { 28 width: 200px; 29 height: 300px; 30 } 31 32 .item { 33 width: 40px; 34 height: 80px; 35 } 36 37 .content { 38 width: 20px; 39 height: 40px; 40 } 41 42 .firstRowFirstColumn { 43 background-color: blue; 44 grid-column: 1; 45 grid-row: 1; 46 } 47 .firstRowSecondColumn { 48 background-color: lime; 49 grid-column: 2; 50 grid-row: 1; 51 } 52 .secondRowFirstColumn { 53 background-color: purple; 54 grid-column: 1; 55 grid-row: 2; 56 } 57 .secondRowSecondColumn { 58 background-color: orange; 59 grid-column: 2; 60 grid-row: 2; 61 } 62 63 /* track sizes allowed to be stetched */ 64 .autoTracks { grid: auto auto / auto auto; } 65 .autoMaxTracks { grid: minmax(40px, auto) minmax(40px, auto) / minmax(20px, auto) minmax(20px, auto); } 66 67 /* content-sized tracks disallowed to be stetched */ 68 .minContentTracks { grid: min-content min-content / min-content min-content; } 69 .maxContentTracks { grid: max-content max-content / max-content max-content; } 70 .minMaxWithMaxContentTracks { grid: minmax(20px, max-content) minmax(20px, max-content) / minmax(20px, max-content) minmax(20px, max-content); } 71 .minMaxWithMinContentTracks { grid: minmax(20px, min-content) minmax(20px, min-content) / minmax(20px, min-content) minmax(20px, min-content); } 72 .minMaxWithMinAutoTracks { grid: minmax(auto, max-content) minmax(auto, max-content) / minmax(auto, max-content) minmax(auto, max-content); } 73 .fitContentTracks { grid: fit-content(20px) fit-content(20px) / fit-content(40px) fit-content(40px); font: 10px/1 Ahem; } 74 </style> 75 76 <script src="/resources/testharness.js"></script> 77 <script src="/resources/testharnessreport.js"></script> 78 <script src="/resources/check-layout-th.js"></script> 79 <script type="text/javascript"> 80 setup({ explicit_done: true }); 81 </script> 82 </head> 83 84 <body onload="document.fonts.ready.then(() => { checkLayout('.grid'); })"> 85 86 <div style="position: relative"> 87 <p>cols: 'auto' | rows: 'auto' | definite-sized container | definite-sized items </p> 88 <div class="grid contentStretch itemsStart definiteSize autoTracks" data-expected-width="200" data-expected-height="300"> 89 <div class="item firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 90 <div class="item firstRowSecondColumn" data-offset-x="100" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 91 <div class="item secondRowFirstColumn" data-offset-x="0" data-offset-y="150" data-expected-width="40" data-expected-height="80"></div> 92 <div class="item secondRowSecondColumn" data-offset-x="100" data-offset-y="150" data-expected-width="40" data-expected-height="80"></div> 93 </div> 94 </div> 95 96 <div style="position: relative"> 97 <p>cols: 'minmax(20px, auto)' | rows: 'minmax(40px, auto)' | definite-sized container | definite-sized items </p> 98 <div class="grid contentStretch itemsStart definiteSize autoMaxTracks" data-expected-width="200" data-expected-height="300"> 99 <div class="item firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 100 <div class="item firstRowSecondColumn" data-offset-x="100" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 101 <div class="item secondRowFirstColumn" data-offset-x="0" data-offset-y="150" data-expected-width="40" data-expected-height="80"></div> 102 <div class="item secondRowSecondColumn" data-offset-x="100" data-offset-y="150" data-expected-width="40" data-expected-height="80"></div> 103 </div> 104 </div> 105 106 <div style="position: relative"> 107 <p>cols: 'min-content' | rows: 'min-content' | definite-sized container | definite-sized items </p> 108 <div class="grid contentStretch itemsStart definiteSize minContentTracks" data-expected-width="200" data-expected-height="300"> 109 <div class="item firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 110 <div class="item firstRowSecondColumn" data-offset-x="40" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 111 <div class="item secondRowFirstColumn" data-offset-x="0" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 112 <div class="item secondRowSecondColumn" data-offset-x="40" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 113 </div> 114 </div> 115 116 <div style="position: relative"> 117 <p>cols: 'max-content' | rows: 'max-content' | definite-sized container | definite-sized items </p> 118 <div class="grid contentStretch itemsStart definiteSize maxContentTracks" data-expected-width="200" data-expected-height="300"> 119 <div class="item firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 120 <div class="item firstRowSecondColumn" data-offset-x="40" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 121 <div class="item secondRowFirstColumn" data-offset-x="0" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 122 <div class="item secondRowSecondColumn" data-offset-x="40" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 123 </div> 124 </div> 125 126 <div style="position: relative"> 127 <p>cols: 'minmax(20px, max-content)' | rows: 'minmax(20px, max-content)' | definite-sized container | definite-sized items </p> 128 <div class="grid contentStretch itemsStart definiteSize minMaxWithMaxContentTracks" data-expected-width="200" data-expected-height="300"> 129 <div class="item firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 130 <div class="item firstRowSecondColumn" data-offset-x="40" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 131 <div class="item secondRowFirstColumn" data-offset-x="0" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 132 <div class="item secondRowSecondColumn" data-offset-x="40" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 133 </div> 134 </div> 135 136 <div style="position: relative"> 137 <p>cols: 'minmax(20px, min-content)' | rows: 'minmax(20px, min-content)' | definite-sized container | definite-sized items </p> 138 <div class="grid contentStretch itemsStart definiteSize minMaxWithMinContentTracks" data-expected-width="200" data-expected-height="300"> 139 <div class="item firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 140 <div class="item firstRowSecondColumn" data-offset-x="40" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 141 <div class="item secondRowFirstColumn" data-offset-x="0" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 142 <div class="item secondRowSecondColumn" data-offset-x="40" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 143 </div> 144 </div> 145 146 <div style="position: relative"> 147 <p>cols: 'minmax(auto, max-content)' | rows: 'minmax(auto, max-content)' | definite-sized container | definite-sized items </p> 148 <div class="grid contentStretch itemsStart definiteSize minMaxWithMinAutoTracks" data-expected-width="200" data-expected-height="300"> 149 <div class="item firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 150 <div class="item firstRowSecondColumn" data-offset-x="40" data-offset-y="0" data-expected-width="40" data-expected-height="80"></div> 151 <div class="item secondRowFirstColumn" data-offset-x="0" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 152 <div class="item secondRowSecondColumn" data-offset-x="40" data-offset-y="80" data-expected-width="40" data-expected-height="80"></div> 153 </div> 154 </div> 155 156 <div style="position: relative"> 157 <p>cols: 'fit-content(40px)' | rows: 'fit-content(20px)' | definite-sized container | content-sized items</p> 158 <div class="grid contentStretch itemsStart definiteSize fitContentTracks" data-expected-width="200" data-expected-height="300"> 159 <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="40" data-expected-height="20">X XX XX X</div> 160 <div class="firstRowSecondColumn" data-offset-x="40" data-offset-y="0" data-expected-width="40" data-expected-height="20">X XX XX X</div> 161 <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="20" data-expected-width="40" data-expected-height="20">X XX XX X</div> 162 <div class="secondRowSecondColumn" data-offset-x="40" data-offset-y="20" data-expected-width="40" data-expected-height="20">X XX XX X</div> 163 </div> 164 </div> 165 166 </body> 167 </html>