<!DOCTYPE HTML>
<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<html><head>
  <meta charset="utf-8">
  <title>Reference: stretching intrinsic ratio 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=">
  <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; }

.start {align-self:start; justify-self:start}
.na {align-self:start; justify-self:start}
.sa {align-self:start; justify-self:start}
.an {align-self:start; justify-self:start}
.as {align-self:start; justify-self:start}
.w20 { width: 20px min-width: 0px; }
.mw20 { min-width: 20px }
.mw0 { min-width: 0px }

.h20 { height: 20px; min-height: 0px; }
.mh20 { min-height: 20px }
.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');
var imgSizes =
  [
  ['4px', '4px'],
  ['4px', '4px'],
  ['16px', '4px'],
  ['10px', '4px'],
  ['4px', '4px'],
  ['2px', '2px'],
  ['20px', '20px'],
  ['10px', '20px'],
  ['20px', '20px'],
  ['10px', '20px'],
  ['16px', '20px'],
  ['10px', '20px'],
  ['20px', '20px'],
  ['10px', '20px'],
  ['4px', '4px'],
  ['4px', '4px'],
  ['16px', '16px'],
  ['10px', '10px'],
  ['16px', '4px'],
  ['10px', '4px'],
  ['4px', '4px'],
  ['2px', '2px'],
  ['4px', '4px'],
  ['2px', '2px'],
  ['4px', '4px'],
  ['2px', '2px'],
  ['4px', '32px'],
  ['2px', '32px'],
  ['4px', '4px'],
  ['2px', '2px'],
  ['20px', '20px'],
  ['20px', '10px'],
  ['20px', '20px'],
  ['20px', '10px'],
  ['20px', '32px'],
  ['20px', '10px'],
  ['32px', '32px'],
  ['20px', '10px'],
  ['4px', '4px'],
  ['4px', '4px'],
  ['16px', '16px'],
  ['10px', '10px'],
  ['16px', '32px'],
  ['16px', '10px'],
  ['32px', '32px'],
  ['10px', '10px'],
  ['20px', '20px'],
  ['20px', '10px'],
  ['20px', '20px'],
  ['20px', '10px'],
  ['20px', '4px'],
  ['20px', '2px'],
  ['20px', '20px'],
  ['20px', '2px'],
  ['20px', '20px'],
  ['20px', '10px'],
  ['20px', '20px'],
  ['20px', '10px'],
  ['20px', '32px'],
  ['20px', '10px'],
  ['20px', '20px'],
  ['20px', '10px'],
  ['20px', '20px'],
  ['10px', '20px'],
  ['20px', '20px'],
  ['10px', '20px'],
  ['32px', '20px'],
  ['10px', '20px'],
  ['20px', '20px'],
  ['10px', '20px'],
  ['20px', '20px'],
  ['2px', '20px'],
  ['20px', '20px'],
  ['10px', '20px'],
  ['4px', '20px'],
  ['2px', '20px'],
  ['20px', '20px'],
  ['10px', '20px'],
];
for (var i = 0; i < imgs.length; ++i) {
  var img = imgs[i];
  img.src = url;
  img.style.width = imgSizes[i][0];
  img.style.height = imgSizes[i][1];
}

</script>

</body>
</html>