grid-item-auto-min-size-clamp-005-ref.html (4197B)
1 <!DOCTYPE html> 2 <!-- 3 Any copyright is dedicated to the Public Domain. 4 http://creativecommons.org/publicdomain/zero/1.0/ 5 --> 6 <html><head> 7 <meta charset="utf-8"> 8 <title>Reference: Clamp 'automatic minimum size' to definite max-sizing of block item with margin:auto</title> 9 <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1300369"> 10 <style type="text/css"> 11 body,html { color:black; background:white; font:16px/1 monospace; padding:0; margin:0; } 12 13 .grid { 14 display: grid; 15 grid-template-columns: repeat(2,minmax(auto, 15px)); 16 grid-template-rows: repeat(2,minmax(auto, 10px)); 17 grid-gap: 1px; 18 align-items: start; 19 justify-items: start; 20 float: left; 21 border: 1px dashed; 22 margin-right: 16px; 23 margin-bottom: 14px; 24 } 25 .sz { 26 width: 40px; 27 height: 40px; 28 } 29 30 .definite { 31 grid-template-columns: repeat(2,15px); 32 grid-template-rows: repeat(2,10px); 33 } 34 .min { 35 grid-template-columns: repeat(2,minmax(min-content, 15px)); 36 grid-template-rows: repeat(2,minmax(min-content, 10px)); 37 } 38 .max { 39 grid-template-columns: repeat(2,minmax(max-content, 15px)); 40 grid-template-rows: repeat(2,minmax(max-content, 10px)); 41 } 42 43 .larger .grid { 44 grid-template-columns: repeat(2,minmax(auto, 25px)); 45 grid-template-rows: repeat(2,minmax(auto, 28px)); 46 } 47 .larger .definite { 48 grid-template-columns: repeat(2,25px); 49 grid-template-rows: repeat(2,28px); 50 } 51 .larger .min { 52 grid-template-columns: repeat(2,minmax(min-content, 25px)); 53 grid-template-rows: repeat(2,minmax(min-content, 28px)); 54 } 55 .larger .max { 56 grid-template-columns: repeat(2,minmax(max-content, 25px)); 57 grid-template-rows: repeat(2,minmax(max-content, 28px)); 58 } 59 60 .stretch .grid { 61 align-items: stretch; 62 justify-items: stretch; 63 } 64 65 span { 66 grid-area: 1 / 1; 67 font-size: 48px; 68 background: grey; 69 background-clip: content-box; 70 border: 1px solid; 71 padding: 1px 3px 5px 7px; 72 margin: 0; 73 } 74 .span2 { 75 grid-area: 1 / 1 / span 2 / span 2; 76 } 77 78 .larger .grid .span2 { 79 font-size: 16px; 80 width: 20px; 81 height: 32px; 82 } 83 84 x { 85 grid-area: 1 / 1; 86 min-width: 0; 87 min-height: 0; 88 align-self: stretch; 89 justify-self: stretch; 90 background: cyan; 91 } 92 c { 93 display: block; 94 width: 20px; 95 height: 32px; 96 } 97 98 br { 99 clear: both; 100 } 101 102 .larger .center > span { 103 justify-self: center; 104 align-self: center; 105 } 106 .larger .ml4 > span { 107 margin-left: 4px; 108 } 109 </style> 110 </head> 111 <body> 112 113 <div id="tests"> 114 <div class="grid"><x></x><span><c>X</c></span></div> 115 <div class="grid definite"><x></x><span><c>X</c></span></div> 116 <div class="grid center"><x></x><span class="span2"><c>X</c></span></div> 117 <div class="grid center definite"><x></x><span class="span2"><c>X</c></span></div> 118 119 <div class="grid sz"><x></x><span><c>X</c></span></div> 120 <div class="grid sz definite"><x></x><span><c>X</c></span></div> 121 <div class="grid ml4 sz"><x></x><span class="span2"><c>X</c></span></div> 122 <div class="grid center sz definite"><x></x><span class="span2"><c>X</c></span></div> 123 124 <br> 125 126 <div class="grid min"><x></x><span><c>X</c></span></div> 127 <div class="grid center min"><x></x><span class="span2"><c>X</c></span></div> 128 <div class="grid sz min"><x></x><span><c>X</c></span></div> 129 <div class="grid ml4 sz min"><x></x><span class="span2"><c>X</c></span></div> 130 131 <div class="grid max"><x></x><span><c>X</c></span></div> 132 <div class="grid center max"><x></x><span class="span2"><c>X</c></span></div> 133 <div class="grid sz max"><x></x><span><c>X</c></span></div> 134 <div class="grid ml4 sz max"><x></x><span class="span2"><c>X</c></span></div> 135 136 <br> 137 138 </div> 139 140 <script> 141 var tests = document.getElementById('tests'); 142 143 var n = tests.cloneNode(true); 144 var wrap = document.createElement('div'); 145 wrap.className = 'larger'; 146 wrap.appendChild(n); 147 document.body.appendChild(wrap); 148 149 /* TODO: sort out https://bugs.chromium.org/p/chromium/issues/detail?id=789927 first 150 var n = tests.cloneNode(true); 151 var wrap = document.createElement('div'); 152 wrap.className = 'stretch'; 153 wrap.appendChild(n); 154 document.body.appendChild(wrap); 155 156 var n = tests.cloneNode(true); 157 var wrap = document.createElement('div'); 158 wrap.className = 'stretch larger'; 159 wrap.appendChild(n); 160 document.body.appendChild(wrap); 161 */ 162 163 </script> 164 165 </body></html>