Layout Helpers

Creating layouts in CSS has always been notoriously difficult. We've always had to rely on hacks to achieve any sort of complex layouts. Before CSS we used tables to hack together layouts that mimicked print layouts.

After CSS overtook tables for styling web pages we relied on floats. And while complex layouts are possible with floats they come with a lot of trade offs.

With the addition of Flexbox and CSS Grid we finally have real layout tools. We no longer need to hack together floated layouts! However its still useful to understand how float based layouts work because chances are you will need to maintain sites that use them. I don't recommend refactoring float based layouts to flex/grid layouts unless its absolutely necessary. Don't "fix" whats already working. Use flex and grid layouts on your new projects.

Learn more about floats

Floats

The purpose of CSS floats is to allow text to wrap around images and other blocks. You should still use floats for this purpose.

Lorem ipsum dolor sit amet consectetur adipisicing elit. Asperiores, corporis neque nobis, minima modi iure nemo voluptates optio possimus impedit reprehenderit ullam corrupti dolore voluptatibus assumenda illum ipsam earum ducimus! Aliquid nesciunt nulla, nobis velit quia aliquam modi ducimus pariatur optio a facilis omnis sapiente sequi quaerat dolorum dicta, illo dolor itaque officia perspiciatis placeat iusto tempore neque.

Float Left

Voluptatem similique temporibus exercitationem officia alias blanditiis debitis tempora nostrum obcaecati molestiae, itaque sunt velit incidunt nulla atque eum tenetur accusantium voluptatum dignissimos! Veritatis consequuntur provident quos hic animi perferendis,

Float Right

distinctio sequi minus omnis voluptates odio vero repudiandae sed, eum recusandae dolorem et ipsam? Commodi reprehenderit vitae magnam, quibusdam enim, excepturi tenetur quam, quaerat id ut assumenda earum. Facere tenetur ullam dolorem autem est pariatur et corporis ab aut maxime omnis ea reprehenderit asperiores harum iste, nisi ut, nam deleniti? Tenetur blanditiis iste modi error? Obcaecati fugit nostrum quod, minus ipsam quae natus, maiores aperiam, explicabo nesciunt facere cum recusandae. Optio odit sed sint quis nam reiciendis veritatis vel adipisci maiores vitae. Iure ab, vitae quos aliquam earum, sequi quas, aut modi corporis consequatur labore libero deleniti ratione? Sed voluptate id magni officiis quaerat rerum voluptas eveniet eius! Deserunt nulla veritatis a.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Qui quia quo quam vel error repellat consequuntur! Nesciunt saepe dolorum, fuga expedita eligendi suscipit rem quam fugit ipsa molestiae quidem dignissimos! Accusantium autem enim, facere error alias non laboriosam vel dolores, repellat totam aspernatur, rem beatae veniam ducimus officiis culpa numquam id dicta distinctio molestiae quis. Magni aspernatur voluptatum facilis voluptas quidem.

Centered

Minima delectus molestiae minus ratione ab illum totam suscipit ipsum, esse rerum atque sunt facere ad praesentium molestias? Error reiciendis consectetur, autem fugiat rem exercitationem sunt laudantium placeat. Nemo veniam nihil quas sapiente praesentium. Accusantium facilis voluptatibus soluta magnam explicabo quo necessitatibus ipsum, repudiandae ea eum. Rem quidem voluptate unde nisi porro quaerat ut eligendi quod repudiandae nesciunt id consequuntur error, ab vel quae eveniet ipsa sint reiciendis veritatis odit dolore. Repellat nemo amet iure hic officiis cumque repellendus ab corporis magnam expedita distinctio ut, libero obcaecati illo at.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Omnis, cumque asperiores architecto mollitia sapiente blanditiis doloremque enim non.

No Float

Nostrum ullam alias, id accusamus tenetur perspiciatis eaque accusantium consequuntur dolore similique dicta iure, dolor iusto! Sapiente sed quasi facilis, officia inventore dolore laudantium consectetur architecto, aut voluptates voluptas fugit, doloribus esse perferendis odit expedita. Optio, voluptatum velit. Deleniti voluptates dolor labore sed nam assumenda molestias beatae adipisci culpa veritatis. Quod sunt voluptate, recusandae expedita corporis animi placeat natus. Sed, vitae quos, impedit perferendis asperiores at tempore vel explicabo, maxime expedita qui adipisci corrupti aperiam. Eos incidunt cumque beatae expedita harum! Assumenda.

<div class="elr-pull-left"></div>
<div class="elr-pull-right"></div>
<div class="elr-no-float"></div>
<div class="elr-center-block"></div>

Clear

Use the clear helper class for quick and dirty old school float clearing. Avoid using this unless you have a very good reason.

<div class="elr-clear"></div>

Screen Reader

When the text that is displayed to visitors reads awkwardly it may be useful to provide some well written text to visitors who are using screen readers. Add the screen-reader class to a line of text and it will be hidden from view but it will be read aloud by screen readers.

For screen readers only

<p class="elr-screen-reader">Something for screen readers only.</p>

Box Model Resets

The CSS box model includes a block's margin, border, padding and content. The width of all of these values is added to calculate the total width of a block.

An element's width property will include its content. The border width and padding is included if the block has a box-sizing property value of border-box. Margin is never include in the width. So box with a width property value of 200px, padding of 20px and a margin of 20px will take up 280px of the screen.

By default all blocks have a box-sizing property value of "content-box". This means that if you set a box to have a width of 200px the width of the border will be added on to the width. So a box with a 1px border will have a total width of 202px.

In the past few years its become more common to apply a box-sizing property value of "border-box" to all elements. This means that if you set a box to have a width of 200px the width of the border and padding will be included in width. So a box with a 1px border and 20px of padding will have a total width of 200px.

CSS Tricks Box Sizing

width: 250px; margin: 20px; padding: 20px; border: 3px solid #333; Notice how the content box is so much larger.

Border Box
Content Box

No Margin

margin: 0 padding: 20px 1px border

Box Model

No padding

margin: 20px; padding: 0; 1px border

Box Model

No border

margin: 20px; padding: 20px; 0 border

Box Model

Overflow Helpers

The overflow property dictates how content will display if its too large for its parent container.

No overflow property applied

By default all boxes have an overflow property value of show. This means that if the content is too large for its container it will just break out. Sometimes this is desireable. Its generally better to have text break out of its box but still be readable than to cut off text.

This box is too big

Overflow hidden

Overflow hidden will hide anything that doesn't fix in the parent container. Notice how the text is just arbitrarily cut off. You can't see it unless you go into the source HTML!

This box is too big

Note: Sometimes overflow hidden is used as a quick and dirty way to clear floats. Avoid using overflow in this manner since content may be hidden from visitors.

If you need to clear floats and can't use a CSS only option I would advise that you use the empty div method instead. Its gross but not as gross as using overflow: hidden to clear floats.

<div style="clear: both"></div>

Overflow scroll

Overflow scroll will hide the content initially but make it visible when the container is scrolled.

This box is too big

Overflow y is hidden. Overflow x scrolls

This box is too big

Overflow x is hidden. Overflow y scrolls

This box is too big

CSS Columns Helpers

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sequi ratione, sunt voluptate quis quo adipisci atque distinctio. Ullam maxime amet dolorem corporis fugiat itaque ea perspiciatis, voluptate ipsam est dignissimos eveniet sed laudantium, quaerat necessitatibus nihil harum perferendis tenetur optio assumenda dolore, omnis porro cumque! Similique corrupti molestiae ratione aspernatur!

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Eum amet fugiat a at soluta reiciendis architecto incidunt obcaecati quae assumenda. Ea animi maiores ab rem!

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Consectetur at modi veritatis quia non tempora accusantium reprehenderit aut distinctio obcaecati nihil perspiciatis, explicabo labore dignissimos, ullam impedit natus sequi perferendis accusamus consequuntur illum sit!

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dicta provident quaerat neque explicabo harum, placeat possimus omnis corporis. Unde deserunt optio expedita quibusdam doloremque odit, suscipit consequatur quidem iusto temporibus ratione excepturi, numquam quasi. Laudantium, doloribus voluptate nostrum molestias beatae laborum magni? Dicta reiciendis cupiditate, aspernatur possimus necessitatibus mollitia velit error quidem animi reprehenderit sapiente autem magni qui expedita corrupti, neque, nulla fugiat veritatis dolore nisi? Quasi, excepturi! Distinctio natus commodi maxime.

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sequi ratione, sunt voluptate quis quo adipisci atque distinctio. Ullam maxime amet dolorem corporis fugiat itaque ea perspiciatis, voluptate ipsam est dignissimos eveniet sed laudantium, quaerat necessitatibus nihil harum perferendis tenetur optio assumenda dolore, omnis porro cumque! Similique corrupti molestiae ratione aspernatur!

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Eum amet fugiat a at soluta reiciendis architecto incidunt obcaecati quae assumenda. Ea animi maiores ab rem!

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Consectetur at modi veritatis quia non tempora accusantium reprehenderit aut distinctio obcaecati nihil perspiciatis, explicabo labore dignissimos, ullam impedit natus sequi perferendis accusamus consequuntur illum sit!

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dicta provident quaerat neque explicabo harum, placeat possimus omnis corporis. Unde deserunt optio expedita quibusdam doloremque odit, suscipit consequatur quidem iusto temporibus ratione excepturi, numquam quasi. Laudantium, doloribus voluptate nostrum molestias beatae laborum magni? Dicta reiciendis cupiditate, aspernatur possimus necessitatibus mollitia velit error quidem animi reprehenderit sapiente autem magni qui expedita corrupti, neque, nulla fugiat veritatis dolore nisi? Quasi, excepturi! Distinctio natus commodi maxime.

Margin Utilities

Sometimes you need to add some margin to an element.

Padding Utilities

Sometimes you need to add some padding to an element.