Flexbox

Flex containers and items: direction, wrapping, growth, alignment and gap.

1 min readv1

A flex row#

HTML
A B grows (flg=1) C
<div nib="d=flex; ali=center; jsc=space-between; g=12px; w=320px; p=12px; bdrd=10px; bgc=#f1f5f9; dark:bgc=#1e293b">
  <span nib="p=6px 10px; bgc=#4F52D9; cl=#fff; bdrd=6px">A</span>
  <span nib="flg=1; p=6px 10px; bgc=#A8ABF4; cl=#1e1b4b; bdrd=6px">B grows (flg=1)</span>
  <span nib="p=6px 10px; bgc=#4F52D9; cl=#fff; bdrd=6px">C</span>
</div>

Alignment cheatsheet#

Goal

Rules

vertically centre a row

d=flex; ali=center

push the last item right

ml=auto on it

space items evenly

jsc=space-between or space-evenly

a column of equal gaps

d=flex; flxd=column; g=12px

wrap onto new lines

flxw=wrap

stop an item shrinking

fls=0

let a text child truncate

mnw=0 on it (plus txo=ellipsis; whs=nowrap; ovf=hidden)

Wrapping tags#

HTML
react vue svelte angular solid
<div nib="d=flex; flxw=wrap; g=6px; w=260px">
  <span nib="p=3px 10px; bdrd=999px; bgc=#E3E4FD; cl=#2E30A0; fts=12px">react</span>
  <span nib="p=3px 10px; bdrd=999px; bgc=#E3E4FD; cl=#2E30A0; fts=12px">vue</span>
  <span nib="p=3px 10px; bdrd=999px; bgc=#E3E4FD; cl=#2E30A0; fts=12px">svelte</span>
  <span nib="p=3px 10px; bdrd=999px; bgc=#E3E4FD; cl=#2E30A0; fts=12px">angular</span>
  <span nib="p=3px 10px; bdrd=999px; bgc=#E3E4FD; cl=#2E30A0; fts=12px">solid</span>
</div>

All flexbox shorthands#

Shorthand

CSS property

flx

flex

flxd

flex-direction

flxw

flex-wrap

flf

flex-flow

flg

flex-grow

fls

flex-shrink

flb

flex-basis

ord

order

jsc

justify-content

ali

align-items

als

align-self

alc

align-content

g

gap

rg

row-gap

cg

column-gap

Next steps#