<!DOCTYPE html>
<style>
div {
gap: 5px;
padding: 5px;
display: inline-grid;
border: 2px solid black;
}
.sub-cols {
border-top-style: dashed;
border-bottom-style: dashed;
grid-template-columns: subgrid;
}
.sub-rows {
border-left-style: dashed;
border-right-style: dashed;
grid-template-rows: subgrid;
}
</style>
<script src="../resources/runner.js"></script>
<body>
<script>
"use strict";
function createSubgrid(n) {
if (n == 1) {
return document.createElement("div");
}
let subgrid = document.createElement("div");
let nested_subgrid = createSubgrid(n / 2);
nested_subgrid.style.gridArea = `1 / 1 / span ${n} / span ${n}`;
nested_subgrid.className = "sub-cols sub-rows";
subgrid.appendChild(nested_subgrid);
nested_subgrid = createSubgrid(n / 2);
nested_subgrid.style.gridArea = `1 / ${n + 1} / span ${n} / span ${n}`;
nested_subgrid.className = "sub-cols";
subgrid.appendChild(nested_subgrid);
nested_subgrid = createSubgrid(n / 2);
nested_subgrid.style.gridArea = `${n + 1} / 1 / span ${n} / span ${n}`;
nested_subgrid.className = "sub-rows";
subgrid.appendChild(nested_subgrid);
nested_subgrid = createSubgrid(n / 2);
nested_subgrid.style.gridArea = `${n + 1} / ${n + 1} / span ${n} / span ${n}`;
subgrid.appendChild(nested_subgrid);
return subgrid;
}
var run_count = 0;
var main = createSubgrid(32);
document.body.appendChild(main);
PerfTestRunner.measureRunsPerSecond({
description: "Measures performance of layout on a page with nested subgrids.",
run: function() {
main.style.width = (++run_count & 1) ? "99%" : "98%";
PerfTestRunner.forceLayout();
}
});
</script>
</body>