| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>CSS Grid Layout Test: indefinite percentage in fit-content()</title> |
| <link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com"> |
| <link rel="help" href="https://drafts.csswg.org/css-grid/#track-sizes" title="7.2.1. Track Sizes"> |
| <meta name="assert" content="Checks that an indefinite percentage in fit-content lets the grid container grow enough to contain the max-content contribution of its grid items."> |
| <style> |
| .container { |
| width: 200px; |
| margin-top: 10px; |
| } |
| .grid { |
| display: inline-grid; |
| background: blue; |
| } |
| .item { |
| background: orange; |
| } |
| .item::before, .item::after { |
| content: ''; |
| float: left; |
| width: 50px; |
| height: 50px; |
| } |
| </style> |
| |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <div id="log"></div> |
| |
| <script> |
| "use strict"; |
| function clamp(value, min, max) { |
| return Math.max(min, Math.min(max, value)); |
| } |
| const minContent = 50; |
| const maxContent = 100; |
| for (const percentage of [0, 50, 75, 100, 150]) { |
| const container = document.createElement("div"); |
| container.className = "container"; |
| document.body.appendChild(container); |
| const grid = document.createElement("div"); |
| grid.className = "grid"; |
| grid.style.gridTemplateColumns = `fit-content(${percentage}%)`; |
| container.appendChild(grid); |
| const item = document.createElement("div"); |
| item.className = "item"; |
| grid.appendChild(item); |
| test(function() { |
| const colSize = clamp(percentage * maxContent / 100, minContent, maxContent); |
| const height = colSize < maxContent ? maxContent : minContent; |
| assert_equals(item.offsetWidth, colSize, "Grid item width"); |
| assert_equals(item.offsetHeight, height, "Grid item height"); |
| assert_equals(grid.offsetWidth, maxContent, "Grid container width"); |
| assert_equals(grid.offsetHeight, height, "Grid container height"); |
| assert_equals(getComputedStyle(grid).gridTemplateColumns, colSize + "px", |
| "Grid column size"); |
| }, `fit-content(${percentage}%)`); |
| } |
| </script> |