<!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: Grid axis fragmentation with column masonry layout</title>
  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
  <style>
html,body {
  color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0;
}
wrapper {
  display: block;
  width: 600px;
  height: 600px;
  overflow: hidden;
}

.columns {
  columns: 3;
  column-fill: auto;
  background: lightgrey;
  margin-bottom: 15px;
}

.grid {
  display: grid;
  grid: 20px auto 30px / auto;
  border: solid;
  border-width: 3px 1px 7px 5px;
  padding: 1px 3px 5px 7px;
  gap: 1px 5px;
}

x {
  background: cyan;
  min-width: 20px;
  min-height: 10px;
}
y {
  background: blue;
  width: 35px;
}
z {
  background: gray;
  width: 40px;
}
masonry-track {
  display: grid;
  justify-content: stretch;
  column-gap: 5px;
}
</style>
</head>
<body>
<wrapper style="display:none">
<div class="columns" style="height:90px">
  <div class="grid">
    <masonry-track><x></x><y></y><y></y><x></x></masonry-track>
    <masonry-track><x></x><x></x><x></x><z></z></masonry-track>
    <masonry-track><z></z><z></z><x></x><z></z></masonry-track>
  </div>
</div>
<div class="columns" style="height:68px">
  <div class="grid">
    <masonry-track><x></x><y></y><y></y><x></x></masonry-track>
    <masonry-track><x></x><x></x><x></x><z></z></masonry-track>
    <masonry-track><z></z><z></z><x></x><z></z></masonry-track>
  </div>
</div>
<div class="columns" style="height:48px">
  <div class="grid">
    <masonry-track><x></x><y></y><y></y><x></x></masonry-track>
    <masonry-track><x></x><x></x><x></x><z></z></masonry-track>
    <masonry-track><z></z><z></z><x></x><z></z></masonry-track>
  </div>
</div>
<div class="columns" style="height:38px">
  <div class="grid">
    <masonry-track><x></x><y></y><y></y><x></x></masonry-track>
    <masonry-track><x></x><x></x><x></x><z></z></masonry-track>
    <masonry-track><z></z><z></z><x></x><z></z></masonry-track>
  </div>
</div>
<div class="columns" style="height:28px">
  <div class="grid">
    <masonry-track><x></x><y></y><y></y><x></x></masonry-track>
    <masonry-track><x></x><x></x><x></x><z></z></masonry-track>
    <masonry-track><z></z><z></z><x></x><z></z></masonry-track>
  </div>
</div>
<div class="columns" style="height:18px">
  <div class="grid">
    <masonry-track><x></x><y></y><y></y><x></x></masonry-track>
    <masonry-track><x></x><x></x><x></x><z></z></masonry-track>
    <masonry-track><z></z><z></z><x></x><z></z></masonry-track>
  </div>
</div>
</wrapper>

<script>
let wrapper = document.querySelectorAll("wrapper")[0];
let grids = document.querySelectorAll(".grid");
for (let e of grids) {
  for (let track of e.children) {
    var cols = "";
    for (let item of track.children) {
      if (item.tagName != "X") cols += "min-content "; else  cols += "auto ";
    }
    track.style.gridTemplateColumns = cols;
  }
}
wrapper.style.display="";
</script>
</body>
</html>
