Stuff & Nonsense product and website design

Blog and all that malarkey

Changingman layout (updated)

Changingman, a liquid three column CSS layout with a fixed positioned and width centre column, released under a Creative Commons Attribution 2.0 license. (This entry was originally posted on 23rd November 2005 and has been updated in 2009.)

Exactly four years ago, I wrote about an unusual three column CSS layout that I had been working on. Why am I republishing this article now, four years after I originally wrote it? One reason is that this article is still widely linked to and is one of the most read pages on this site. Another is that I wanted to update the example file as the original version featured branding from a company I sold in 2006. I have also taken this opportunity to explain how the layout was achieved, something I didn't do in 2005.

In 2005, I had been working hard on a new design. Early on, the need arose for a liquid three column layout which featured two flexible outer columns and a fixed width centre column, not a layout commonly seen implemented with CSS. I also wanted the centre column to be fixed in the browser window. Early experiments proved tricky to implement.

First the bare-bones HTML elements.

<div id="content">
<div id="nav"></div>
<div id="content-main"></div>
<div id="content-sub"></div>
</div>
<p id="footer"></p>

The content area fills the full width, with a little left/right whitespace. 80px bottom padding allows room to repeat the ska-squares background image.

#content {
position : relative;
width : 96%;
margin : 0 2%;
padding-bottom : 80px;
background : transparent url(content.png) repeat-x 0 100%; }

#content:after {
content : "\0020";
display : block;
height : 0;
clear : both;
visibility : hidden;
overflow : hidden; }

This layout is designed to work down to a 1024px width and uses a tricky mix of percentage and pixel widths. First, float the left column. It has a 34% width plus 200px right padding. Why 200px? Coincidentally that will be the width of the fixed centre column. More on that in a moment.

#content-main {
float : left;
width : 34%;
padding : 60px 200px 0 0; }


Floating the left column

Next, place the right column. Almost a mirror of the left column, with a little negative left margin to pull the column into position. Once again the 200px left padding creates space for the fixed centre column.

#content-sub {
float : left;
width : 34%;
margin : 0 0 0 -200px;
padding : 60px 0 0 200px; }


Right column (with negative margin)

Now absolutely position the fixed, 200px wide, centre column.

#nav {
position : fixed;
top : 40px;
left : 34.6%;
width : 200px; }


Positioning the centre column and completing the layout.

So here is Changingman (updated), released under a Creative Commons Attribution 2.5 license for you to do with whatever you so choose.


Written by Andy Clarke


More from Stuff & Nonsense

Andy Clarke demonstrates how to take your product and website designs to the next level.

Take your Squarespace designs to the next level with our premium Squarespace templates.

The popular web design contract template trusted by thousands of web designers and developers.

Andy is an experienced mentor who can help you improve your design skills and develop your career.


Hire me. I’m available now to work on product and website design projects.