Source code
Revision control
Copy as Markdown
Other Tools
<!DOCTYPE HTML>
<!--
Any copyright is dedicated to the Public Domain.
-->
<html>
<meta charset="utf-8">
<title>Reference: Masonry layout intrinsic sizing</title>
<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
<style>
@import "support/masonry-intrinsic-sizing-visual.css";
grid {
display: inline-grid;
gap: 1px 2px;
grid-auto-flow: column;
border: 1px solid;
padding: 0 1px 0 2px;
vertical-align: top;
}
.auto grid {
grid-template-rows: repeat(4,auto);
}
.fr grid {
grid-template-rows: 1fr 2fr 1fr 1fr;
}
.mix1 grid {
grid-template-rows: 1fr 2fr min-content max-content;
}
.mix2 grid {
grid-template-rows: 1.1ch auto 1.4ch 1fr;
/* keep fixed values small enough for spanners to have an effect */
}
item {
/* smaller heights to fit into 800x600 */
writing-mode: vertical-rl;
text-orientation: sideways;
}
</style>
<body>
<section class="auto">
<grid style="grid-template-rows: repeat(4, 2ch)">
<item style="height:2ch">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</grid>
<grid style="grid-template-rows: repeat(4, 2ch)">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:2ch">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:2ch; grid-area: 2/1">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="visibility: hidden">4</item>
<item style="height:4ch; grid-area:2/1/4/2">5</item>
</grid>
<grid>
<item style="grid-row: 4">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="visibility: hidden">4</item>
<item style="grid-area: 2/1/span 2/2">5</item>
<item style="height:5ch; grid-area: 1/2/4/3">6</item>
</grid>
<grid>
<item style="grid-row: 4">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="visibility: hidden">4</item>
<item style="height:3ch; grid-area: 2/1/4/2">5</item>
<item style="height:5ch; grid-area: 1/2/4/3">6</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="grid-row:span 4">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:6ch; grid-row:span 4">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:6ch; grid-area: 1/2/4/3">5</item>
<item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
</grid>
</section>
<!-- ditto with 'fr' sizing -->
<section class="fr">
<grid>
<item style="height:2ch">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:2ch">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:2ch; grid-area: 2/1">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:4ch; grid-area: 2/1/4/2">5</item>
</grid>
<grid>
<item style="grid-row: 4">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="visibility: hidden">4</item>
<item style="grid-area: 2/1/span 2/2">5</item>
<item style="height:5ch; grid-area: 1/2/4/3">6</item>
</grid>
<grid>
<item style="grid-row: 4">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="visibility: hidden">4</item>
<item style="height:3ch; grid-area: 2/1/4/2">5</item>
<item style="height:5ch; grid-area: 1/2/4/3">6</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="grid-row:span 4">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:6ch; grid-row:span 4">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:6ch; grid-area: 1/2/4/3">5</item>
<item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
</grid>
</section>
<!-- ditto with mixed sizing: fr + min/max-content -->
<section class="mix1">
<grid style="grid-template-rows: 2ch 4ch 2ch 2ch">
<item style="height:2ch">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</grid>
<grid style="grid-template-rows: 2ch 4ch 2ch 2ch">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:2ch">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:2ch; grid-area: 2/1">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="visibility: hidden">4</item>
<item style="height:4ch; grid-area: 2/1/4/2">5</item>
</grid>
<grid>
<item style="grid-row: 4">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="visibility: hidden">4</item>
<item style="grid-area: 2/1/span 2/2">5</item>
<item style="height:5ch; grid-area: 1/2/4/3">6</item>
</grid>
<grid>
<item style="grid-row: 4">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="visibility: hidden">4</item>
<item style="height:3ch; grid-area: 2/1/4/2">5</item>
<item style="height:5ch; grid-area: 1/2/4/3">6</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="grid-row:span 4">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:6ch; grid-row:span 4">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:6ch; grid-area: 1/2/4/3">5</item>
<item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
</grid>
</section>
<!-- ditto with mixed sizing: fixed + auto + fr -->
<section class="mix2">
<grid style="grid-template-rows: 1.1ch 2ch 1.4ch 2ch">
<item style="height:2ch">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</grid>
<grid style="grid-template-rows: 1.1ch 2ch 1.4ch 2ch">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:2ch">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:2ch; grid-area: 2/1">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="visibility: hidden">4</item>
<item style="height:4ch; grid-area: 2/1/4/2">5</item>
</grid>
<grid>
<item style="grid-row: 4">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="grid-area: 2/1/span 2/2">5</item>
<item style="height:5ch; grid-area: 1/2/4/3">6</item>
</grid>
<grid>
<item style="grid-row: 4">1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:3ch; grid-area: 2/1/4/2">5</item>
<item style="height:5ch; grid-area: 1/2/4/3">6</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="grid-row:span 4">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:6ch; grid-row:span 4">5</item>
</grid>
<grid>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item style="height:6ch; grid-area: 1/2/4/3">5</item>
<item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
</grid>
</section>