TheLBO Gridis a CSS Grid‑based layout system designed to provide consistent, modular track widths for your application. Tracks are derived from abase content widthand ascale ratio, ensuring that all layout widths remain mathematically aligned.
Inspired by the following resources:
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quo amet inventore repellat soluta ducimus fugiat a numquam blanditiis, cupiditate nisi saepe voluptas fugit similique necessitatibus mollitia deleniti doloremque officia impedit qui atque, iusto assumenda. Ratione laboriosam aliquam blanditiis? Reprehenderit ea ad aperiam corrupti dignissimos ipsa ut autem consequuntur optio eligendi.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quo amet inventore repellat soluta ducimus fugiat a numquam blanditiis, cupiditate nisi saepe voluptas fugit similique necessitatibus mollitia deleniti doloremque officia impedit qui atque, iusto assumenda. Ratione laboriosam aliquam blanditiis? Reprehenderit ea ad aperiam corrupti dignissimos ipsa ut autem consequuntur optio eligendi.
full,xwide,wide,pop,cont,inset,narrow, andtiny.cont(content) track unless otherwise specified.You configure the grid system usingCSS custom properties:
--lbo-w-cont→ the base content max width (e.g.1060px).--lbo-scale→ the modular scale ratio (e.g.1.25for Major Third,1.618for Golden ratio).--lbo-sz-pad-min→ the minimum side padding/gutter (default:2rem).All other widths are derived automatically:
--lbo-w-pop= content × scale--lbo-w-wide= content × scale²--lbo-w-xwide= content × scale³--lbo-w-inset= content ÷ scale--lbo-w-narrow= inset ÷ scale--lbo-w-tiny= narrow ÷ scaleYou can opt into different ratios using thedata-scaleattribute:
<div class="lbo-layout" data-scale="golden"> … </div>Available scales:
Each track has a matching utility class to place children:
.lbo-full→ full width (edge to edge).lbo-full-pad→ full width with side padding.lbo-xwide→ extra wide.lbo-wide→ wide.lbo-pop→ popout.lbo-cont→ content (the default track).lbo-inset→ inset.lbo-narrow→ narrow.lbo-tiny→ tinyIf no utility class is assigned, elements placed directly inside.lbo-layoutwill automatically use thecontenttrack:
.lbo-layout > * {
grid-column: lbo-cont;
}<div class="lbo-layout" data-scale="golden">
<header class="lbo-full-pad">Header</header>
<section class="lbo-pop">Popout content</section>
<main>Default content (no class) auto-placed</main>
<aside class="lbo-inset">Inset sidebar</aside>
<footer class="lbo-full">Footer</footer>
</div>--lbo-w-cont) — set the maximum reading width for body text. (Recommended start:~840–960pxfor text-heavy,~1060pxfor spacious marketing layouts.)--lbo-scale) — pick the geometric ratio that defines all relationships. Golden ratio gives balanced steps; Major Third (1.25) is a solid default.--lbo-sz-pad-min) — the minimum side gutter, adjusts with breakpoints.Asubgridcannot create grid tracks on its own — it must inherit them from a parentgrid. In the LBO system, that parent is always.lbo-layout(or.lbo-full-width).
+----------------------------------------------------+ | .lbo-layout ← master grid container | | | | [lbo-full-start] ... [lbo-full-end] | | | | +--------------------------------------------+ | | | .lbo-subgrid (display:grid; subgrid cols) | | | | | | | | +------------------+ +----------------+ | | | | | .branding | | .nav | | | | | | .lbo-cont-start | | .lbo-cont-end | | | | | +------------------+ +----------------+ | | | +--------------------------------------------+ | | | +----------------------------------------------------+
- The outer.lbo-layoutdefines named grid lines like[lbo-cont-start]/[lbo-cont-end].
- The inner.lbo-subgridinherits those lines from its parent and re‑exposes them to its children.
- Children inside.lbo-subgridcan now use.lbo-cont,.lbo-pop,.lbo-cont-start, etc. just like direct children of.lbo-layout.