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