<h1>The Waffle Object</h1> <div class="box"> <div class="o-waffle"> <div class="o-waffle__item"><p>One</p></div> <div class="o-waffle__item"><p>Two</p></div> <div class="o-waffle__item"><p>Three</p></div> <div class="o-waffle__item"><p>Four</p></div> <div class="o-waffle__item"><p>Five</p></div> <div class="o-waffle__item"><p>Six</p></div> <div class="o-waffle__item"><p>Seven</p></div> <div class="o-waffle__item"><p>Eight</p></div> <div class="o-waffle__item"><p>Nine</p></div> <div class="o-waffle__item"><p>Ten</p></div> <div class="o-waffle__item"><p>Eleven</p></div> <div class="o-waffle__item"><p>Twelve</p></div> </div> </div> <h2>Wider-column variant</h2> <div class="box"> <div class="o-waffle o-waffle--wider"> <div class="o-waffle__item"><p>One</p></div> <div class="o-waffle__item"><p>Two</p></div> <div class="o-waffle__item"><p>Three</p></div> <div class="o-waffle__item"><p>Four</p></div> <div class="o-waffle__item"><p>Five</p></div> <div class="o-waffle__item"><p>Six</p></div> <div class="o-waffle__item"><p>Seven</p></div> <div class="o-waffle__item"><p>Eight</p></div> <div class="o-waffle__item"><p>Nine</p></div> <div class="o-waffle__item"><p>Ten</p></div> <div class="o-waffle__item"><p>Eleven</p></div> <div class="o-waffle__item"><p>Twelve</p></div> </div> </div>
/* ========================================================================== #WAFFLE OBJECT ========================================================================== */ /** * The waffle object aligns items in a grid. It should be the full width of the * container, even taking into account the negative margins. */ .o-waffle { --o-waffle-columns: 4; --o-waffle-item-width: calc(100% / var(--o-waffle-columns)); --o-waffle-spacing: 0.5em; display: flex; flex-flow: row wrap; margin: calc(var(--o-waffle-spacing) / -2); width: calc(100% + var(--o-waffle-spacing)); } .o-waffle__item { margin: calc(var(--o-waffle-spacing) / 2); width: calc(var(--o-waffle-item-width) - var(--o-waffle-spacing)); } .o-waffle--wider { --o-waffle-columns: 3; } /* ========================================================================== #PAGE STYLES ========================================================================== */ p { background-color: pink; margin: 0; } .box { border: 1px solid #000; margin-bottom: 1em; }