<!DOCTYPE html>
<html lang=en>
<meta charset="utf-8">
<title>CSS Grid Layout Test: grid-template-columns fit-content()</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#track-sizing">
<link rel="match" href="grid-template-columns-fit-content-001-ref.html">
<meta name="assert" content="This test checks that 'fit-content()' works as expected in grid-template-columns, i.e., it's similar to 'auto' ('minmax(auto, max-content)') except that the growth limit is clamped at the argument of 'fit-content' (if greater than the 'auto' minimum).">
<meta name="flags" content="ahem">
<link rel="stylesheet" href="/css/support/grid.css">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
.grid {
  justify-content: start;
  width: 100px;
  position: relative;
  padding-top: 10px;
  margin-bottom: 5px;
  grid-column-gap: 5px;
}

.fc0 { grid-template-columns: fit-content(0px);}
.fc40 { grid-template-columns: fit-content(40px); }
.fc80 { grid-template-columns: fit-content(80px); }
.fc110 { grid-template-columns: fit-content(110px); }

.fc0x2 { grid-template-columns: repeat(2, fit-content(0px));}
.fc40x2 { grid-template-columns: repeat(2, fit-content(40px)); }
.fc80x2 { grid-template-columns: repeat(2, fit-content(80px)); }
.fc110x2 { grid-template-columns: repeat(2, fit-content(110px)); }

.fc0p { grid-template-columns: fit-content(0%); }
.fc30p { grid-template-columns: fit-content(30%); }
.fc90p { grid-template-columns: fit-content(90%); }
.fc110p { grid-template-columns: fit-content(110%); }

.fc0px2 { grid-template-columns: repeat(2, fit-content(0%)); }
.fc30px2 { grid-template-columns: repeat(2, fit-content(30%)); }
.fc90px2 { grid-template-columns: repeat(2, fit-content(90%)); }
.fc110px2 { grid-template-columns: repeat(2, fit-content(110%)); }

.item {
  font: 10px/1 Ahem;
  background: cyan;
  padding-top: 2px;
}

.spanningItem {
  font: 10px/1 Ahem;
  grid-column: 1 / -1;
  grid-row: 2;
  background: salmon;
  padding-top: 2px;
}

.test {
  position: absolute;
  left: 0; right: 0; top: 0;
  height: 5px;
  background: purple;
}
.test:nth-child(2n) { background: orange; }

.floatLeft {
  float: left;
  width: 190px;
}

h3 { font-size: 1em; }

</style>

<p>The test passes if it has the same output than the reference.</p>

<div class="floatLeft">
  <h3>Only fit-content() and with fixed size tracks.</h3>
  <div class="grid fc0">
    <div class="item">XXX</div>
    <div class="test autoRowFirstColumn"></div>
  </div>

  <div class="grid fc0x2">
    <div class="item">XXX</div>
    <div class="spanningItem">XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid fc40">
    <div class="item">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
  </div>

  <div class="grid fc40x2">
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid fc40x2">
    <div class="item">XXX XXX</div>
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid fc80">
    <div class="item">XXX XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
  </div>

  <div class="grid fc80x2">
    <div class="spanningItem">XXX XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid fc80x2">
    <div class="item autoRowSecondColumn">XXX XXX XXX</div>
    <div class="spanningItem">XXX XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: fit-content(20px) 50%;">
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: minmax(10px, 40px) fit-content(40px);">
    <div class="item">XXXXX</div>
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: fit-content(40px) minmax(10%, 200px);">
    <div class="item autoRowSecondColumn">XXXXX</div>
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

</div>

<div class="floatLeft">
  <h3>fit-content() with other content-sized tracks.</h3>
  <div class="grid" style="grid-template-columns: fit-content(40px) max-content;">
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: fit-content(40px) max-content;">
    <div class="item">XXXXX</div>
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: fit-content(40px) max-content;">
    <div class="item autoRowSecondColumn">XXXXX</div>
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: min-content fit-content(40px);">
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: min-content fit-content(40px);">
    <div class="item">XXXXX</div>
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: min-content fit-content(40px);">
    <div class="item autoRowSecondColumn">XXXXX</div>
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: fit-content(30px) min-content max-content">
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
    <div class="test autoRowThirdColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: min-content fit-content(30px) max-content">
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
    <div class="test autoRowThirdColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: min-content max-content fit-content(30px)">
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
    <div class="test autoRowThirdColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: fit-content(30px) min-content max-content">
    <div class="item" style="grid-column: 1">XXX XX</div>
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
    <div class="test autoRowThirdColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: min-content fit-content(30px) max-content">
    <div class="item" style="grid-column: 1">XXX XX</div>
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
    <div class="test autoRowThirdColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: min-content max-content fit-content(30px)">
    <div class="item" style="grid-column: 2">XXX XX</div>
    <div class="spanningItem">XXX XX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
    <div class="test autoRowThirdColumn"></div>
  </div>
</div>

<div class="floatLeft">
  <h3>fit-content() with percentage arguments.</h3>
  <div class="grid fc0p">
    <div class="item">XXX</div>
    <div class="test autoRowFirstColumn"></div>
  </div>

  <div class="grid fc0px2">
    <div class="item">XXX</div>
    <div class="spanningItem">XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid fc30p">
    <div class="item">XX XX</div>
    <div class="test autoRowFirstColumn"></div>
  </div>

  <div class="grid fc30px2">
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid fc30px2">
    <div class="item autoRowSecondColumn">X X X</div>
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid fc90p">
    <div class="item">XXX XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
  </div>

  <div class="grid fc90px2">
    <div class="spanningItem">XXX XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid fc90px2">
    <div class="item autoRowSecondColumn">XXX XXX XXX</div>
    <div class="spanningItem">XXX XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>
</div>

<div class="floatLeft">
  <h3>max-content &lt; fit-content() argument.</h3>

  <div class="grid fc110">
    <div class="item">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
  </div>

  <div class="grid fc110x2">
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid fc110x2">
    <div class="item">XXX XXX</div>
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: fit-content(110px) fit-content(40px);">
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: fit-content(110px) fit-content(40px);">
    <div class="item autoRowSecondColumn">XX</div>
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: max-content fit-content(110px);">
    <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div>
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: fit-content(110px) min-content;">
    <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div>
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: max-content fit-content(110px) max-content;">
    <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div>
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
    <div class="test autoRowThirdColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: min-content fit-content(110px) min-content;">
    <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div>
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
    <div class="test autoRowThirdColumn"></div>
  </div>

  <div class="grid" style="grid-template-columns: auto fit-content(110px) auto;">
    <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div>
    <div class="spanningItem">XXX XXX</div>
    <div class="test autoRowFirstColumn"></div>
    <div class="test autoRowSecondColumn"></div>
    <div class="test autoRowThirdColumn"></div>
  </div>

</div>
