mirror of
https://github.com/RGBCube/serenity
synced 2026-01-20 15:30:59 +00:00
Update the tests after adding minmax(), auto-fill and auto-fit functionality to the LibWeb implementation of the CSS Grid.
230 lines
7.6 KiB
HTML
230 lines
7.6 KiB
HTML
<style>
|
|
.grid-container {
|
|
display: grid;
|
|
background-color: lightsalmon;
|
|
}
|
|
.grid-item {
|
|
background-color: lightblue;
|
|
}
|
|
</style>
|
|
|
|
<!-- A basic grid -->
|
|
<p>Should render a 2x2 grid</p>
|
|
<div
|
|
class="grid-container"
|
|
style="grid-template-columns: auto auto;">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">2</div>
|
|
<div class="grid-item">3</div>
|
|
<div class="grid-item">4</div>
|
|
</div>
|
|
|
|
<!-- Different row heights -->
|
|
<p>Should render a 2x2 grid with the first row having a height of 50px</p>
|
|
<div
|
|
class="grid-container"
|
|
style="grid-template-columns: auto auto;">
|
|
<div class="grid-item" style="height: 50px;">1</div>
|
|
<div class="grid-item">2</div>
|
|
<div class="grid-item">3</div>
|
|
<div class="grid-item">4</div>
|
|
</div>
|
|
|
|
<p>Start of crash tests</p>
|
|
<!-- Check for a bug where a github page was crashing due to the following code. -->
|
|
<div
|
|
class="grid-container"
|
|
style="
|
|
--Layout-sidebar-width:296px;
|
|
grid-template-columns: minmax(0, var(--Layout-sidebar-width));">
|
|
<div class="grid-item">1</div>
|
|
</div>
|
|
|
|
<!-- Spans causing positions outside the inherit grid. (span 2 with an end position of 1 causes the start to be -1) -->
|
|
<div class="grid-container">
|
|
<div class="grid-item" style="grid-row: span 2 / 1; grid-column: span 2 / 1;">1</div>
|
|
<div class="grid-item" style="grid-row: span 2 / 1;">2</div>
|
|
<div class="grid-item" style="grid-column: span 2 / 1;">3</div>
|
|
<div class="grid-item" style="grid-column-end: 1; grid-row-end: 1;">6</div>
|
|
</div>
|
|
|
|
<!-- 0 positioned grid items and similar inputs -->
|
|
<div class="grid-container" style="grid-template-rows: repeat(4,[row-start] 1fr [row-end]);">
|
|
<div class="grid-item" style="grid-row-end: 0;">2</div>
|
|
<div class="grid-item" style="grid-row: 0 / 0;">3</div>
|
|
<div class="grid-item" style="grid-column: 0 / 1;">4</div>
|
|
<div class="grid-item" style="grid-row: 1 / 0;">5</div>
|
|
<div class="grid-item" style="grid-row-end: 1;">1</div>
|
|
<div class="grid-item" style="grid-column-end: 1;">6</div>
|
|
</div>
|
|
|
|
<!-- Grid-column-span larger than implicit grid for row-positioned items -->
|
|
<div class="grid-container">
|
|
<div class="grid-item" style="grid-row: 1 / -1; grid-column: span 4;">1</div>
|
|
</div>
|
|
<!-- Grid-column-span larger than implicit grid for non-positioned items -->
|
|
<div class="grid-container">
|
|
<div class="grid-item" style="grid-column: span 4;">1</div>
|
|
</div>
|
|
<!-- Grid-row-span larger than implicit grid for column-positioned items -->
|
|
<div class="grid-container">
|
|
<div class="grid-item" style="grid-column: 1 / -1; grid-row: span 4;">1</div>
|
|
</div>
|
|
<!-- Grid-row-span larger than implicit grid for non-positioned items -->
|
|
<div class="grid-container">
|
|
<div class="grid-item" style="grid-row: span 4;">1</div>
|
|
</div>
|
|
<!-- Minmax parsing with calc (Another crash found thanks to Github)-->
|
|
<div
|
|
class="grid-container"
|
|
style="grid-template-columns: minmax(0, calc(100% - var(--Layout-sidebar-width) - var(--Layout-gutter)));">
|
|
</div>
|
|
|
|
<p>End of crash tests</p>
|
|
|
|
<!-- Different column sizes -->
|
|
<p>Should render a 2x2 grid with columns 50px and 50%</p>
|
|
<div
|
|
class="grid-container"
|
|
style="
|
|
grid-template-columns: 50px 50%;
|
|
grid-template-rows: auto auto;">
|
|
<div class="grid-item"
|
|
style="
|
|
grid-column: 1 / 1;
|
|
grid-row: 1 / 1">1</div>
|
|
<div class="grid-item"
|
|
style="
|
|
grid-column: 2 / 2;
|
|
grid-row: 1 / 1">2</div>
|
|
<div class="grid-item"
|
|
style="
|
|
grid-column: 1 / 1;
|
|
grid-row: 2 / 2">3</div>
|
|
<div class="grid-item"
|
|
style="
|
|
grid-column: 2 / 2;
|
|
grid-row: 2 / 2">4</div>
|
|
</div>
|
|
|
|
<!-- Using grid-row and grid-column -->
|
|
<p>Should render a full-width 4x4 grid with:
|
|
<ul>
|
|
<li>one large column on the left</li>
|
|
<li>one large column on the right, being split in half vertically, with the number 2 in the top half, and numbers 3, 4, 5, and 6 in the bottom</li>
|
|
</ul>
|
|
<div
|
|
class="grid-container"
|
|
style="
|
|
grid-template-columns: repeat(8, 1fr);
|
|
grid-template-rows: repeat(2, 25px 25px 25px 25px );
|
|
">
|
|
<div class="grid-item" style="grid-row: 1 / -1; grid-column: span 4;">1</div>
|
|
<div class="grid-item" style="grid-row: 1 / 5; grid-column: 5 / -1;">2</div>
|
|
<div class="grid-item" style="grid-column: span 2; grid-row: span 2;">3</div>
|
|
<div class="grid-item" style="grid-column: span 2 / -1; grid-row: span 2;">4</div>
|
|
<div class="grid-item" style="grid-column: span 2; grid-row: 7 / span 100;">5</div>
|
|
<div class="grid-item" style="grid-column: 7 / span 2; grid-row: span 2 / -1;">6</div>
|
|
</div>
|
|
|
|
<!-- Invalid minmax value as can't have a flexible length as a minimum value -->
|
|
<p>Should render 2 items with no grid formatting (one on top of the other)
|
|
<div
|
|
class="grid-container"
|
|
style="grid-template-columns: minmax(1fr, 100px) 1fr 1fr;">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">2</div>
|
|
</div>
|
|
|
|
<!-- Invalid minmax value in repeat as can't have a flexible length as a minimum value -->
|
|
<p>Should render 2 items with no grid formatting (one on top of the other)
|
|
<div
|
|
class="grid-container"
|
|
style="grid-template-columns: repeat(3, minmax(1fr, 100px));">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">2</div>
|
|
</div>
|
|
|
|
<!-- Basic minmax -->
|
|
<p>Basic minmax(): Should render 2 items side by side, each with a minimum width of 150px, If there is enough space,
|
|
they will expand up to 300px each.</p>
|
|
<div
|
|
class="grid-container"
|
|
style="grid-template-columns: minmax(150px, 300px) minmax(150px, 300px);">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">2</div>
|
|
</div>
|
|
|
|
<!-- Basic minmax vertical-->
|
|
<p>Since there is no vertical limit, the two rows should be 50px high each.</p>
|
|
<div
|
|
class="grid-container"
|
|
style="
|
|
grid-template-columns: minmax(150px, 300px) minmax(150px, 300px);
|
|
grid-template-rows: minmax(25px, 50px) minmax(25px, 50px);
|
|
">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">2</div>
|
|
</div>
|
|
|
|
<!-- Basic minmax vertical-->
|
|
<p>Since there is a height limit, the rows should be 25px high each.</p>
|
|
<div
|
|
class="grid-container"
|
|
style="
|
|
height: 50px;
|
|
grid-template-columns: minmax(150px, 300px) minmax(150px, 300px);
|
|
grid-template-rows: minmax(25px, 50px) minmax(25px, 50px);
|
|
">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">2</div>
|
|
<div class="grid-item">2</div>
|
|
<div class="grid-item">2</div>
|
|
</div>
|
|
|
|
<!-- Minmax horizontal with maximum as flex-->
|
|
<p>3 columns with minimum 200px and maximum 100%.</p>
|
|
<div
|
|
class="grid-container"
|
|
style="
|
|
grid-template-columns: minmax(200px, 1fr) minmax(200px, 1fr) minmax(200px, 1fr);
|
|
">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">2</div>
|
|
<div class="grid-item">3</div>
|
|
</div>
|
|
|
|
<!-- Auto-fill-->
|
|
<p>Auto-fill of minimum 250px, max 1fr</p>
|
|
<div
|
|
class="grid-container"
|
|
style="
|
|
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
|
|
">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">2</div>
|
|
<div class="grid-item">3</div>
|
|
</div>
|
|
|
|
<!-- Auto-fit-->
|
|
<p>Auto-fit of minimum 250px, max 1fr</p>
|
|
<div
|
|
class="grid-container"
|
|
style="
|
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
|
">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">2</div>
|
|
<div class="grid-item">3</div>
|
|
</div>
|
|
|
|
<!-- See point 12.5.1, differences between minmax sizes. For example as a max it's comparing 2 flexes with a
|
|
length value, and as a minimum two lengths with an auto. -->
|
|
<p>Article layout: small margins on mobile, large on desktop. Centered column with 70ch width maximum</p>
|
|
<div
|
|
class="grid-container"
|
|
style="grid-template-columns: minmax(1rem, 1fr) minmax(auto, 70ch) minmax(1rem, 1fr);">
|
|
<div class="grid-item">1</div>
|
|
<div class="grid-item">Article content</div>
|
|
<div class="grid-item">3</div>
|
|
</div>
|