sdxc

[ @sdxc/u/layout ]

grid-row

Applies grid-row, placing or spanning a grid item along the block axis.

import { gridRow } from "@sdxc/u/layout";

Quick reference

Every documented call, beside the CSS it emits.

CallCSS
u.gridRow(2)css({ gridRow: 2 })
u.gridRow("span 3")css({ gridRow: "span 3" })
u.gridRow("1 / -1")css({ gridRow: "1 / -1" })
u.gridRow("header-start / header-end")css({ gridRow: "header-start / header-end" })

Examples

Basic example

Use gridRow("span n") to make an item span n rows:

gridRow("span 3")
02
gridRow("span 2")
04
05
06
<div
	mix={[
		grid(),
		gridTemplate({ columns: repeat(3, 1), rows: repeat(3, "4rem") }),
		gridAutoFlow("column"),
		gap(4),
	]}
>
	<div mix={[gridRow("span 3"), ...]}>gridRow("span 3")</div>
	<div mix={[...]}>02</div>
	<div mix={[gridRow("span 2"), ...]}>gridRow("span 2")</div>
	<div mix={[...]}>04</div>
	<div mix={[...]}>05</div>
	<div mix={[...]}>06</div>
</div>

Starting and ending lines

Pass "start / end" line numbers to place an item between two row lines, with negative numbers counting back from the end:

gridRow("1 / -1")
gridRow("2 / 4")
gridRow("1 / 3")
<div
	mix={[
		grid(),
		gridTemplate({ columns: repeat(3, 1), rows: repeat(3, "4rem") }),
		gridAutoFlow("column"),
		gap(4),
		...,
	]}
>
	<div mix={[gridRow("1 / -1"), ...]}>gridRow("1 / -1")</div>
	<div mix={[gridRow("2 / 4"), ...]}>gridRow("2 / 4")</div>
	<div mix={[gridRow("1 / 3"), ...]}>gridRow("1 / 3")</div>
</div>

Starting on a line

Pass a number to start an item on that row line, like gridRow(2); it spans one row from there:

gridRow(2)
gridRow(3)
gridRow(1)
<div
	mix={[
		grid(),
		gridTemplate({ columns: repeat(3, 1), rows: repeat(3, "3rem") }),
		gap(4),
		...,
	]}
>
	<div mix={[gridColumn(1), gridRow(2), ...]}>gridRow(2)</div>
	<div mix={[gridColumn(2), gridRow(3), ...]}>gridRow(3)</div>
	<div mix={[gridColumn(3), gridRow(1), ...]}>gridRow(1)</div>
</div>

Using a custom value

Every scale argument also takes a raw CSS value, which passes through untouched.

u.gridRow("2.75rem")

Applying on a state

Wrap the call in a state utility to scope it to one selector.

u.hover(u.gridRow(2))

Responsive design

Wrap the call in a container query to scope it to one width.

u.at("md", u.gridRow(2))

Signature

u.gridRow(value: GridLineValue)

Written by Sergio Xalambrí. Follow @sergiodxa for new packages, or sponsor the work.