| <!DOCTYPE html> |
| <html class="reftest-wait"> |
| <head> |
| <meta charset="utf-8"> |
| <title>CSS Grid Layout Test: Support for 'grid-auto-columns' and |
| 'grid-auto-rows' properties with implicit tracks after and before the |
| explicit grid</title> |
| <link rel="help" href="https://drafts.csswg.org/css-grid/#auto-tracks"> |
| <link rel="match" href="../reference/grid-support-grid-auto-columns-rows-003-ref.html"> |
| <style> |
| #wrapper { |
| display: grid; |
| grid-template-columns: 50px 50px 50px 50px; |
| } |
| |
| /* Implicit and explicit grid track sizes */ |
| .grid { |
| display: grid; |
| grid-auto-rows: 2px 3px; |
| grid-auto-columns: 2px 3px; |
| } |
| #one .grid { grid-template: 5px / 5px; } |
| #two .grid { grid-template: 5px 5px / 5px 5px; } |
| #three .grid { grid-template: 5px 5px 5px / 5px 5px 5px; } |
| |
| /* Grid item positions. */ |
| .item-left1 { grid-area: auto / auto / 1 / 1; } |
| .item-explicit { grid-area: 1 / 1 / -1 / -1; } |
| .item-right1 { grid-area: -1 / -1; } |
| |
| #zero .item-left3 { grid-area: auto / auto / -3 / -3; } |
| #zero .item-left2 { grid-area: auto / auto / -2 / -2; } |
| #zero .item-right2 { grid-area: 2 / 2; } |
| #zero .item-right3 { grid-area: 3 / 3; } |
| #one .item-left3 { grid-area: auto / auto / -4 / -4; } |
| #one .item-left2 { grid-area: auto / auto / -3 / -3; } |
| #one .item-right2 { grid-area: 3 / 3; } |
| #one .item-right3 { grid-area: 4 / 4; } |
| #two .item-left3 { grid-area: auto / auto / -5 / -5; } |
| #two .item-left2 { grid-area: auto / auto / -4 / -4; } |
| #two .item-right2 { grid-area: 4 / 4; } |
| #two .item-right3 { grid-area: 5 / 5; } |
| #three .item-left3 { grid-area: auto / auto / -6 / -6; } |
| #three .item-left2 { grid-area: auto / auto / -5 / -5; } |
| #three .item-right2 { grid-area: 5 / 5; } |
| #three .item-right3 { grid-area: 6 / 6; } |
| |
| /* Colors */ |
| .item-left3 { background: #ff0; } |
| .item-left2 { background: #ff0; } |
| .item-left1 { background: #ff0; } |
| .item-explicit { background: #f0f; } |
| .item-right1 { background: #0ff; } |
| .item-right2 { background: #0ff; } |
| .item-right3 { background: #0ff; } |
| </style> |
| <script> |
| function createDivWithClass(className, parent) { |
| let element = document.createElement('div'); |
| element.className = className || ''; |
| if (!parent) { |
| parent = document.body; |
| } |
| parent.appendChild(element); |
| return element; |
| } |
| |
| function generate(parentId) { |
| let parent = document.getElementById(parentId); |
| |
| for (let leftNum = 0; leftNum <= 3; ++leftNum) { |
| for (let rightNum = 0; rightNum <= 3; ++rightNum) { |
| let grid = leftNum + rightNum > 0 |
| ? createDivWithClass("grid", parent) |
| : null; |
| |
| for (let i = 1; i <= leftNum; ++i) { |
| createDivWithClass("item-left" + i, grid); |
| } |
| |
| if (leftNum + rightNum > 0) { |
| createDivWithClass("item-explicit", grid); |
| } |
| |
| for (let i = 1; i <= rightNum; ++i) { |
| createDivWithClass("item-right" + i, grid); |
| } |
| } |
| } |
| } |
| |
| function run() { |
| // This is equal to something like this: |
| // <div class="grid"> |
| // <div class="item-left3"></div> |
| // <div class="item-left2"></div> |
| // <div class="item-left1"></div> |
| // <div class="item-explicit"></div> |
| // <div class="item-right1"></div> |
| // <div class="item-right2"></div> |
| // <div class="item-right3"></div> |
| // </div> |
| // Generate the grid examples with 0~3 left items and 0~3 right items. |
| // The item-explicit is placed inside the 0x0 ~ 3x3 explicit tracks. |
| generate("zero"); |
| generate("one"); |
| generate("two"); |
| generate("three"); |
| |
| document.documentElement.offsetHeight; |
| document.documentElement.classList.remove('reftest-wait'); |
| } |
| </script> |
| </head> |
| <body onload="run()"> |
| <div id="wrapper"> |
| <!-- Zero explicit track --> |
| <div id="zero"></div> |
| |
| <!-- One explicit track --> |
| <div id="one"></div> |
| |
| <!-- Two explicit tracks --> |
| <div id="two"></div> |
| |
| <!-- Three explicit tracks --> |
| <div id="three"></div> |
| </div> |
| </body> |
| </html> |