The float: right; property in CSS is a layout tool that every web developer should have in their toolkit. It allows you to effortlessly shift block elements to the right side of their parent containers.
In this comprehensive guide, we’ll cover how leverage float: right to create complex multi-column layouts for the web.
A Brief History of CSS Floats
Before digging into specifics on float right, it helps to understand the history of floats in web design.
The concept of “floating” elements originated from print design decades ago. Newspapers and magazines had text and images that would wrap around each other on a page.
Web developers needed similar layout abilities when building some of the very first websites in the early 1990s. But capabilities were limited when using rigid <table> and <frame> based layouts.
So browsers eventually introduced CSS floats as a tool for flowing content more flexibly:
// New in CSS2:
img {
float: right;
}
Text could move around floated items, just like in print design. This opened huge doors for web layout possibilities early on.
Of course, floats also had their challenges like clearing and browser inconsistencies. But overall became a web design cornerstone.
Even today with modern techniques like Flexbox and CSS Grid, floats continue to be widely used for alignment, text wrapping, and web page structure.
Understanding how to properly float elements right unlocks all kinds of responsive website capabilities…
Float Refresher
Before jumping specifically into right aligned floats, let’s recap some fundamentals:
- The CSS
floatproperty removes an element from normal document flow - Floated items shift left or right as far as they can within their parent container
- Text and inline content will wrap around the floated element
- Floats do not affect parent height by default
For example:
.pull-right {
float: right;
}
The element is bumped all the way right, with content flowing around it.
Note: Floats only shift elements horizontally. Container width contains floats, while height collapses.
This leads to one of the most common uses of floats…
Text Wrapping
Wrapping text around a floated block element is a classic web design pattern:
<img src="photo.jpg" class="right">
<p>Vivamus porttitor turpis ac leo pulvinar mollis. Donec valortortis dignissim.</p>
.right {
float: right;
margin: 0 0 2em 2em;
}
This allows an image or ad to bump up next to body text cleanly:

Slight margin on the float prevents content crowding too closely.
This same text wrapping concept applies equally as well to:
- Advertisements
- Blockquotes
- Form elements
- Video embeds
- Notice containers
- And essentially any boxed content!
Floating inline content right keeps surrounding text flowing naturally around it.
Multi-Column Website Layouts
However, one of the most powerful applications of float is building entire page layouts with columns. Consider this:
+----------------------+ +------------+\
| Site | | Sidebar Ad |\
| content flows | +------------+ \
| down here in | \
| one single column | /
+----------------------+
Without any floats, websites would be constrained to vertical stacking like this.
But applying float left and right to inner containers allows two columns:
+----------------------+ +------------+\
| Site | | Sidebar Ad |\
| content | +------------+ \
+----------------------+ \
Lots more /
content! /
Creating entire page layouts instead of just text wraps.
And float right is key for moving sidebar secondary content out of the way, while main content flows down on the left.
Let‘s see some examples…
Two Column Layout
A simple two column structure like this:

Can be achieved by floating two <div>s left and right:
<div class="container">
<div class="main">
<!-- left column content -->
</div>
<div class="sidebar">
<!-- right column content -->
</div>
</div>
.main {
float: left;
width: 70%;
}
.sidebar {
float: right;
width: 30%;
}
The widths allow flexible resizing.
But as mentioned earlier, floated columns can cause issues with container collapse:

We fix this by clearing the floats on the parent after:
.container::after {
content: "";
clear: both;
display: table;
}
And now we get a properly stretched two column layout!
Three Column Website Structure
This concept extends seamlessly to three or more columns:

The left and right columns float, while middle stays in flow:
<div class="container">
<div class="left">
<!-- 25% width -->
</div>
<div class="middle">
<!-- 50% width -->
</div>
<div class="right">
<!-- 25% width -->
</div>
</div>
.left {
float: left;
width: 25%;
}
.right {
float: right;
width: 25%;
}
And the semantically named classes keep everything logical!
Four Column Grid Layout
You can leverage floats to create even more advanced grid systems. Such as this four column structure:

Which aligns four even width columns horizontally:
<div class="grid">
<div class="col">...</div>
<div class="col">...</div>
<div class="col">...</div>
<div class="col">...</div>
</div>
.col {
float: left;
width: 25%;
}
Spanning elements as needed vertically.
While this does start to push the limits of floats, you can absolutely achieve these professional multi-column web design layouts.
And remember to clear those floats on the grid parent!
Clearing Floats
In general no matter how advanced your float-based layout gets, handling parent height collapse is vital.
Let‘s revisit the most common clearfix solution:
.container::after {
content: "";
clear: both;
display: table;
}
Which can be added to any parent element after floats.
Some key details on this technique:
- Uses generated content via
::afterso no extra HTML elements required - Works all the way back to IE6 for maximum browser support
display: tablefixes old IE bugs- Place clearfix on closest affected parent, don‘t overuse it
There are some other options for clearing like:
- Overflow auto/hidden on parent
- Adding a new inner div with
clear:both - The outdated micro clearfix hack
But the pseudo element approach is cleanest.
Just be sure to clear properly, or your beautifully floated layout may fall apart!
Common Problems and Solutions
As with any web technology, there are nuances to keep in mind when working with floats. Be aware of…
Double Margin Bug
Sometimes vertical spacing between floats can appear to "double":

This is caused by collapsed margins stacking incorrectly. Some fixes:
- Add
display: flow-rooton container - Set
overflowon container like our clearfix - Simpler margins (e.g. no vertical margins on floats themselves)
So spaces stay evenly as you expect!
Float Shuffling Content Order
Because floats are removed from normal flow, source order doesn‘t always visually match display.
For example form fields may shuffle:
Solve by tweaking your HTML structure itself to match intended visual stacking.
Styling Container Backgrounds
By default, floated columns can "escape" out of parent containers visually. Any backgrounds on containers would not wrap around:
Fix this by also applying floats to containers to stretch full bleed.
Or switch to modern CSS for backgrounds that ignore floats.
With an awareness of potential issues like this, you can learn to avoid any pitfalls with floats!
Float Use Cases Beyond Layouts
So far we‘ve focused on using float: right principally for creating website multiple column layouts.
But floats are actually useful for aligning many other types of page element types.
Navigation Menus
For example, complex mega menus with submenu columns can be structured entirely with floats:

Floated left, right, and nested as needed.
Sidebars and Widgets
The most obvious use case – sidebar content areas!
+----------------------+
| Main area |
+----------------------+
| Related posts | ^ |
| Newsletter form | | Floating
| Events list | | Right
| Advertisement | v |
+----------------------+
Keeping secondary content from interrupting flow of main content.
Form Layout
You can float labels, help text, inputs, and more for professional form alignment:

Linking labels to fields cleanly.
Article Media
And even multi-media content within articles themselves:

Pulling images, blockquotes, etc right and left to decorate text.
These are just a handful of examples. Essentially any boxed content can be aligned with float techniques.
It‘s a ubiquitous and versatile tool.
Alternatives to Floats
With floats being so baked into web design historically, they can feel like second nature to many developers.
But current best practices actually recommend avoiding overuse of floats for most layouts. More modern techniques exist…
Flexbox
For nearly all general web layout tasks, Flexbox is the preferred tool:
.container {
display: flex;
}
Reflowing content responsively across rows and columns.
Way simpler than float clearing headaches!
CSS Grid
For advanced data-dense pages like dashboards and admin UIs, CSS Grid offers precise alignments:
.grid {
display: grid;
}
With row and column track based templates.
Inline-Block
And for text wrapping specifically, display: inline-block can work with less issues:
.pull-right {
display: inline-block;
margin-left: 2em;
}
No need to clear anything!
So in summary:
- Flexbox – Whole layouts
- Grid – Data aligning
- Inline-Block – Text wraps
Before reaching to use floats again, consider if these newer methods could be better alternatives.
Yet also respect browser support for less capable users. Floats remain a tried and true fallback.
Conclusion
While floats may feel outdated by more modern CSS, they continue to be a reliable way to align and wrap content flexibly.
And mastering float: right in particular unlocks multipage web design.
Just beware of potential bugs around clearing, margin collisions, and overflow. Plan around these quirks and floats operate wonderfully.
They are well supported and straightforward to apply for effortless text wrapping and column layouts.
Yet also consider limiting use in favor of Flexbox or Grid where possible for stability.
With smart practice, floats can be leveraged safely for aligning all kinds of components for the web. Right aligned and otherwise!
Related Float Resources
To dive even deeper into leveraging floats masterfully, refer to these additional tutorials:


