<!DOCTYPE HTML> <!-- Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> <html><head> <meta charset="utf-8"> <title>CSS Grid Test: stretching intrinsic size items with 'normal' and/or 'stretch' and min/max-size, with Automatic Minimum Size clamping</title> <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id="> <link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-justify-self-normal"> <link rel="match" href="grid-item-intrinsic-ratio-normal-003-ref.html"> <style type="text/css"> * { vertical-align: bottom; } .grid { display: inline-grid; border: 3px solid grey; grid: 32px / 4px; margin-right:20px; } .r { grid: 4px / 32px; } button { border: 1px solid; padding: 0; margin: 0; background: lightgrey; } .start {align-self:start; justify-self:start} .na {align-self:normal; justify-self:start} .sa {align-self:stretch; justify-self:start} .an {align-self:start; justify-self:normal} .as {align-self:start; justify-self:stretch} .w20 { width: 20px } .mw20 { min-width: 20px } .mxw10 { max-width: 10px } .mxw2 { max-width: 2px } .mw0 { min-width: 0px } .h20 { height: 20px } .mh20 { min-height: 20px } .mxh10 { max-height: 10px } .mxh2 { max-height: 2px } .mh0 { min-height: 0px } </style> </head> <body> <div class="grid r"><img></div> <div class="grid r"><img class="start"></div> <div class="grid r"><img class="sa"></div> <div class="grid r"><img class="sa mxw10"></div> <div class="grid r"><img class="na"></div> <div class="grid r"><img class="na mxw2"></div> <pre><!--min-height:20px--></pre> <div class="grid r"><img class="mh20"></div> <div class="grid r"><img class="mh20 mxw10"></div> <div class="grid r"><img class="start mh20"></div> <div class="grid r"><img class="start mh20 mxw10"></div> <div class="grid r"><img class="sa mh20"></div> <div class="grid r"><img class="sa mh20 mxw10"></div> <div class="grid r"><img class="na mh20"></div> <div class="grid r"><img class="na mh20 mxw10"></div> <pre><!--min-height:0--></pre> <div class="grid r"><img class="mh0"></div> <div class="grid r"><img class="mh0 mxw10"></div> <div class="grid r"><img class="start mh0"></div> <div class="grid r"><img class="start mh0 mxw10"></div> <div class="grid r"><img class="sa mh0"></div> <div class="grid r"><img class="sa mh0 mxw10"></div> <div class="grid r"><img class="na mh0"></div> <div class="grid r"><img class="na mh0 mxw2"></div> <pre><!----></pre> <div class="grid"><img></div> <div class="grid"><img class="mxw2"></div> <div class="grid"><img class="start"></div> <div class="grid"><img class="start mxw2"></div> <div class="grid"><img class="sa"></div> <div class="grid"><img class="sa mxw2"></div> <div class="grid"><img class="na"></div> <div class="grid"><img class="na mxw2"></div> <pre><!--min-width:20px--></pre> <div class="grid"><img class="mw20"></div> <div class="grid"><img class="mw20 mxh10"></div> <div class="grid"><img class="start mw20"></div> <div class="grid"><img class="start mw20 mxh10"></div> <div class="grid"><img class="sa mw20"></div> <div class="grid"><img class="sa mw20 mxh10"></div> <div class="grid"><img class="na mw20"></div> <div class="grid"><img class="na mw20 mxh10"></div> <pre><!--min-width:0--></pre> <div class="grid"><img class="mw0"></div> <div class="grid"><img class="mw0 mxh10"></div> <div class="grid"><img class="start mw0"></div> <div class="grid"><img class="start mw0 mxh10"></div> <div class="grid"><img class="sa mw0"></div> <div class="grid"><img class="sa mw0 mxh10"></div> <div class="grid"><img class="na mw0"></div> <div class="grid"><img class="na mw0 mxh10"></div> <pre><!--width:20px--></pre> <div class="grid r"><img class="w20"></div> <div class="grid r"><img class="w20 mxh10"></div> <div class="grid r"><img class="start w20"></div> <div class="grid r"><img class="start w20 mxh10"></div> <div class="grid r"><img class="sa w20"></div> <div class="grid r"><img class="sa w20 mxh2"></div> <div class="grid r"><img class="na w20"></div> <div class="grid r"><img class="na w20 mxh2"></div> <pre><!--width:20px--></pre> <div class="grid"><img class="start w20"></div> <div class="grid"><img class="start w20 mxh10"></div> <div class="grid"><img class="start w20"></div> <div class="grid"><img class="start w20 mxh10"></div> <div class="grid"><img class="sa w20"></div> <div class="grid"><img class="sa w20 mxh10"></div> <div class="grid"><img class="na w20"></div> <div class="grid"><img class="na w20 mxh10"></div> <pre><!--height:20px--></pre> <div class="grid r"><img class="h20"></div> <div class="grid r"><img class="h20 mxw10"></div> <div class="grid r"><img class="start h20"></div> <div class="grid r"><img class="start h20 mxw10"></div> <div class="grid r"><img class="as h20"></div> <div class="grid r"><img class="as h20 mxw10"></div> <div class="grid r"><img class="an h20"></div> <div class="grid r"><img class="an h20 mxw10"></div> <pre><!--height:20px--></pre> <div class="grid"><img class="h20"></div> <div class="grid"><img class="h20 mxw2"></div> <div class="grid"><img class="start h20"></div> <div class="grid"><img class="start h20 mxw10"></div> <div class="grid"><img class="as h20"></div> <div class="grid"><img class="as h20 mxw2"></div> <div class="grid"><img class="an h20"></div> <div class="grid"><img class="an h20 mxw10"></div> <script> var url = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAEElEQVQoz2NgGAWjYBTAAAADEAABaJFtwwAAAABJRU5ErkJggg%3D%3D"; var imgs = document.querySelectorAll('img'); for (var i = 0; i < imgs.length; ++i) { imgs[i].src = url; } </script> <script> document.body.clientHeight; var imgs = document.querySelectorAll('img'); var s = ' [\n'; for (var i = 0; i < imgs.length; ++i) { s += " ['"+ imgs[i].width + "px', '" + imgs[i].height + "px'],\n"; } s += ']'; console.log(s) </script> <!-- For generating button size results in -ref file <script> document.body.clientHeight; var buttons = document.querySelectorAll('button'); var s = ' [\n'; for (var i = 0; i < buttons.length; ++i) { var cs = window.getComputedStyle(buttons[i]); s += " ['"+ cs['width'] + "', '" + cs['height'] + "'],\n"; } s += ']'; console.log(s) </script> --> </body> </html>