Mozilla

Making CSS from Good to Great

The Power of Subgrid

Chen Hui Jing / @hj_chen

🇸🇬 Singlish edition 🇸🇬

😏 Singlish-o-meter 🤔


🇲🇾 👾 🏀 🚲 🖌️ 👟 💻 🖊️ 🎙 🦊 🥑 🧗 🏳️‍🌈
Chen Hui Jing
Jing
@hj_chen

Singlish lesson: Tok Kong

Hokkien term meaning “superb” or “top of the line”.
In Mandarin, it's possible to write it as “督公 (dū gōng) ”
“Have you used CSS grid to build layout? It's super tok kong!”

Source: The Coxford Singlish Dictionary

Nexmo Developer Relations

🥑 Developer Advocate 🥑

Nexmo

Web layouts over the years

No layout

Singlish lesson: Swee

Hokkien for “pretty” or “beautiful”. Also used to describe something as properly or correctly done.
“This layout do until very swee leh.”

Source: The Coxford Singlish Dictionary

Table-based layout
Nested boxes

Singlish lesson: Jia lat

Hokkien adjective literally meaning "to eat strength". Means that a task is onerous and consumes one's energy. Can sometimes be used to denote being in trouble.
“Have you inspected Twitter lately? The markup nest until very jia lat leh.”

Source: The Coxford Singlish Dictionary

Float-based layout
(╯°□°)╯︵ ┻━┻

Singlish lesson: Senget

Malay for “slanted” or “crooked”.
“How come the last item in the row senget wan?”

Source: The Coxford Singlish Dictionary

Panel-style from frameworks
Tweet by Jon Gold on how all websites these days use 1 of 2 layouts

Block layout

designed for laying out documents

block layout

Inline layout

designed for laying out text

inline layout

Table layout

designed for laying out 2D data in a tabular format

table layout

Positioned layout

designed for very explicit positioning without much regard for other elements in the document

positioned layout

Flexible box layout

describes a CSS box model optimised for user interface design and designed for laying out more complex applications and webpages

Grid layout

Defines a two-dimensional grid-based layout system,
optimised for user interface design.

Why is CSS grid special?

“Grid works from the container in,
other layout methods start with the item”
—Rachel Andrew

Layout technique: inline-block

Item A

Item B

Item C

Item D

Item E

Item F

Layout technique: float

Item A

Item B

Item C

Item D

Item E

Item F

Layout technique: flex

Item A

Item B

Item C

Item D

Item E

Item F

Grid is the only layout technique that establishes a relationship between rows and columns of grid items.

Basics of CSS Grid

Define your grid.

Define a grid

Place items in the grid.

Place items in the grid

Grid terminology

Grid terminology

Singlish lesson: Si bei

Originated from Teochew, means “very” or “extremely”
Literally translates to “死父 (sǐ fù) ” or “dead father”
“The CSS grid roll-out in 2017 was sibei successful.”

Browser support for Grid (Level 1)

Data on support for the css-grid feature across the major browsers from caniuse.com

Using DevTools to learn Grid

Live demo QR code for link to example page

What's in Grid Level 2?

    Level 2 expands Grid by:
  • adding “subgrid” capabilities for nested grids to participate in the sizing of their parent grids
  • aspect-ratio–controlled gutters

Why do we need subgrid?

Card style layout Speaker cards Inline form labels and inputs

The subgrid syntax

Same properties, more values

grid-template-columns: subgrid <line-name-list>?
grid-template-rows: subgrid <line-name-list>?

The subgrid keyword indicates to the browser the nested grid will use the same sizing as its parent along the relevant axis.

.subgrid-container {
  grid-columns: 2 / 5; /* placement for the subgrid container itself */

  display: grid; /* you must still apply a display: grid to the subgrid */
  grid-template-columns: subgrid;
  grid-template-rows: subgrid;
}
Nested boxes

Using DevTools to learn Subgrid

Live demo QR code for link to example page

Browser support for subgrid

Data on support for the css-subgrid feature across the major browsers from caniuse.com

References

Thanks sia 🤗

Websitehttps://www.chenhuijing.com

Twitter@hj_chen

Medium@hj_chen

Codepen@huijing

Header font is Ostrich Sans by Tyler Finck.
Body font is Libre Baskerville by Pablo Impallari.