grid-auto-fit-rows-001.html (9386B)
1 <!DOCTYPE html> 2 <title>CSS Grid: auto-fit rows</title> 3 <link rel="author" title="Sergio Villar" href="mailto: svillar@igalia.com"> 4 <link rel="help" href="https://drafts.csswg.org/css-grid-1/#valdef-repeat-auto-fit"> 5 <link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-auto-columns"> 6 <link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-auto-rows"> 7 <link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template-rows"> 8 <link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-row"> 9 <link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-grid-row-gap"> 10 <link rel="help" href="https://crbug.com/619930"> 11 <link rel="help" href="https://crbug.com/589460"> 12 <meta name="assert" content="Check that auto-fit rows are properly computed in a grid container"/> 13 <link href="/css/support/grid.css" rel="stylesheet"> 14 <style> 15 16 .grid { 17 border: 2px solid magenta; 18 height: 200px; 19 width: 25px; 20 align-content: start; 21 grid-auto-rows: 157px; 22 grid-auto-columns: 25px; 23 24 float: left; 25 position: relative; 26 margin-right: 2px; 27 } 28 29 .gridOnlyAutoRepeat { grid-template-rows: repeat(auto-fit, 30px [autobar]); } 30 .gridPercentAutoRepeat { grid-template-rows: repeat(auto-fill, 30%); padding: 13px 0; } 31 .gridMinMaxAutoRepeat { grid-template-rows: repeat(auto-fill, minmax(13px, 30px)); } 32 .gridMaxMinAutoRepeat { grid-template-rows: repeat(auto-fill, minmax(30px, 13px)); } 33 .gridMaxMinPercentAutoRepeat { grid-template-rows: repeat(auto-fill, minmax(30px, 6.5%)); } 34 .gridAutoRepeatAndFixedBefore { grid-template-rows: 10px [foo] 20% [bar] repeat(auto-fit, [autofoo] 35px); } 35 .gridAutoRepeatAndFixedAfter { grid-template-rows: repeat(auto-fit, [first] 30px [last]) [foo] minmax(60px, 80px) [bar] minmax(45px, max-content); } 36 .gridAutoRepeatAndFixed { grid-template-rows: [start] repeat(2, 50px [a]) [middle] repeat(auto-fit, [autofoo] 15px [autobar]) minmax(5%, 10%) [end]; } 37 .gridMultipleNames { grid-template-rows: [start] 20px [foo] 50% repeat(auto-fit, [bar] 20px [start foo]) [foo] 10% [end bar]; } 38 .gridMultipleTracks { grid-template-rows: [start] 20px repeat(auto-fit, [a] 2em [b c] 10% [d]) [e] minmax(75px, 1fr) [last]; } 39 40 .item { background: cyan; } 41 .item:nth-child(2n) { background: green; } 42 43 .gap { grid-row-gap: 20px; } 44 45 </style> 46 47 <script src="/resources/testharness.js"></script> 48 <script src="/resources/testharnessreport.js"></script> 49 <script src="/resources/check-layout-th.js"></script> 50 51 <body onload="checkLayout('.grid')"> 52 <div id="log"></div> 53 54 <p>This test checks that repeat(auto-fit, ) syntax works as expected.</p> 55 56 <div class="grid gridOnlyAutoRepeat"> 57 <div class="item" style="grid-row: 1 / span 6" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> 58 </div> 59 60 <div class="grid gridPercentAutoRepeat"> 61 <div class="item" style="grid-row: 1 / -1" data-offset-y="13" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> 62 </div> 63 64 <div class="grid gridMinMaxAutoRepeat"> 65 <div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> 66 </div> 67 68 <div class="grid gridMaxMinAutoRepeat"> 69 <div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> 70 </div> 71 72 <div class="grid gridMaxMinPercentAutoRepeat"> 73 <div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> 74 </div> 75 76 <div class="grid gridOnlyAutoRepeat"> 77 <div class="item" style="grid-row: 1 / span 6 autobar" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> 78 </div> 79 80 <div class="grid gridOnlyAutoRepeat gap"> 81 <div class="item" style="grid-row: 1 / span 5" data-offset-y="0" data-offset-x="0" data-expected-height="357" data-expected-width="25"></div> 82 </div> 83 84 <div class="grid gridOnlyAutoRepeat gap"> 85 <div class="item" style="grid-row: autobar 2 / span 3" data-offset-y="0" data-offset-x="0" data-expected-height="257" data-expected-width="25"></div> 86 </div> 87 88 <div class="grid gridAutoRepeatAndFixedBefore"> 89 <div class="item" style="grid-row: 1 / span 6" data-offset-y="0" data-offset-x="0" data-expected-height="190" data-expected-width="25"></div> 90 </div> 91 92 <div class="grid gridAutoRepeatAndFixedBefore"> 93 <div class="item" style="grid-row: foo / autofoo" data-offset-y="10" data-offset-x="0" data-expected-height="40" data-expected-width="25"></div> 94 </div> 95 96 <div class="grid gridAutoRepeatAndFixedBefore"> 97 <div class="item" style="grid-row: bar / 5 autofoo" data-offset-y="50" data-offset-x="0" data-expected-height="297" data-expected-width="25"></div> 98 </div> 99 100 <div class="grid gridAutoRepeatAndFixedBefore gap"> 101 <div class="item" style="grid-row: 1 / span 4" data-offset-y="0" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> 102 </div> 103 104 <div class="grid gridAutoRepeatAndFixedBefore gap"> 105 <div class="item" style="grid-row: span 3 / 2 autofoo" data-offset-y="0" data-offset-x="0" data-expected-height="125" data-expected-width="25"></div> 106 </div> 107 108 <div class="grid gridAutoRepeatAndFixedBefore gap"> 109 <div class="item" style="grid-row: notPresent / 3 autofoo" data-offset-y="267" data-offset-x="0" data-expected-height="157" data-expected-width="25"></div> 110 </div> 111 112 <div class="grid gridAutoRepeatAndFixedAfter"> 113 <div class="item" style="grid-row: 1 / span 4" data-offset-y="0" data-offset-x="0" data-expected-height="185" data-expected-width="25"></div> 114 </div> 115 116 <div class="grid gridAutoRepeatAndFixedAfter"> 117 <div class="item" style="grid-row: first / last 2" data-offset-y="0" data-offset-x="0" data-expected-height="60" data-expected-width="25"></div> 118 </div> 119 120 <div class="grid gridAutoRepeatAndFixedAfter"> 121 <div class="item" style="grid-row: last 2 / foo" data-offset-y="0" data-offset-x="0" data-expected-height="80" data-expected-width="25"></div> 122 </div> 123 124 <div class="grid gridAutoRepeatAndFixedAfter gap"> 125 <div class="item" style="grid-row: 1 / span 3" data-offset-y="0" data-offset-x="0" data-expected-height="195" data-expected-width="25"></div> 126 </div> 127 128 <div class="grid gridAutoRepeatAndFixedAfter gap"> 129 <div class="item" style="grid-row: 3 / span 1 bar" data-offset-y="80" data-offset-x="0" data-expected-height="222" data-expected-width="25"></div> 130 </div> 131 132 <div class="grid gridAutoRepeatAndFixedAfter gap"> 133 <div class="item" style="grid-row: first / foo" data-offset-y="0" data-offset-x="0" data-expected-height="30" data-expected-width="25"></div> 134 </div> 135 136 <div class="grid gridAutoRepeatAndFixed"> 137 <div class="item" style="grid-row: 1 / span 8" data-offset-y="0" data-offset-x="0" data-expected-height="195" data-expected-width="25"></div> 138 </div> 139 140 <div class="grid gridAutoRepeatAndFixed"> 141 <div class="item" style="grid-row: a / autobar 2" data-offset-y="50" data-offset-x="0" data-expected-height="80" data-expected-width="25"></div> 142 </div> 143 144 <div class="grid gridAutoRepeatAndFixed"> 145 <div class="item" style="grid-row: autofoo / end" data-offset-y="100" data-offset-x="0" data-expected-height="95" data-expected-width="25"></div> 146 </div> 147 148 <div class="grid gridAutoRepeatAndFixed gap"> 149 <div class="item" style="grid-row: 1 / span 4" data-offset-y="0" data-offset-x="0" data-expected-height="195" data-expected-width="25"></div> 150 </div> 151 152 <div class="grid gridAutoRepeatAndFixed gap"> 153 <div class="item" style="grid-row: autobar / -1" data-offset-y="140" data-offset-x="0" data-expected-height="20" data-expected-width="25"></div> 154 </div> 155 156 <div class="grid gridMultipleNames"> 157 <div class="item" style="grid-row: 1 / -1" data-offset-y="0" data-offset-x="0" data-expected-height="200" data-expected-width="25"></div> 158 </div> 159 160 <div class="grid gridMultipleNames"> 161 <div class="item" style="grid-row: foo 3 / 4 bar" data-offset-y="120" data-offset-x="0" data-expected-height="40" data-expected-width="25"></div> 162 </div> 163 164 <div class="grid gridMultipleNames"> 165 <div class="item" style="grid-row: -6 / span 2 start" data-offset-y="20" data-offset-x="0" data-expected-height="140" data-expected-width="25"></div> 166 </div> 167 168 <div class="grid gridMultipleNames gap"> 169 <div class="item" style="grid-row: -4 / -2" data-offset-y="40" data-offset-x="0" data-expected-height="140" data-expected-width="25"></div> 170 </div> 171 172 <div class="grid gridMultipleNames gap"> 173 <div class="item" style="grid-row: bar / foo 2" data-offset-y="160" data-offset-x="0" data-expected-height="20" data-expected-width="25"></div> 174 </div> 175 176 <div class="grid gridMultipleNames gap"> 177 <div class="item" style="grid-row: foo / bar 2" data-offset-y="40" data-offset-x="0" data-expected-height="180" data-expected-width="25"></div> 178 </div> 179 180 <div class="grid gridMultipleTracks"> 181 <div class="item" style="grid-row: e / last;" data-offset-y="52" data-offset-x="0" data-expected-height="148" data-expected-width="25"></div> 182 <div class="item" style="grid-row: start / b;" data-offset-y="0" data-offset-x="0" data-expected-height="52" data-expected-width="25"></div> 183 </div> 184 185 <div class="grid gridMultipleTracks gap"> 186 <div class="item" style="grid-row: c / -1;" data-offset-y="40" data-offset-x="0" data-expected-height="160" data-expected-width="25"></div> 187 </div> 188 189 </body>