Block 1

Filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler

Filler

Filler

Filler

Filler

Filler

Filler

Filler

Filler

Filler

Filler

Filler

Filler

Filler

Last filler

Snap 1

Block 2

Filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler

Filler

Filler

Filler

Last filler

Snap 2

Block 3

Filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler filler

Filler

Filler

Last filler

Snap 3

This example forms part of the Position is Everything article, In Search of the One True Layout.

Display Controls
col 1 col 2 col 3
element
width
longest

total width100%

If column wrapping occurs, try reducing total width to 99%

Instructions

HTML Output

<div id="wrapper">
<div id="block_1">
	...
<div class="verticalalign"><p>Snap 1</p></div>
</div>
<div id="block_2">
	...
<div class="verticalalign"><p>Snap 2</p></div>
</div>
<div id="block_3">
	...
<div class="verticalalign"><p>Snap 3</p></div>
</div>
</div>

CSS Rules

#block_1
	{
	float: left;
	width: 33%;
	margin-left: 34%;
	}
* html #block_1
	{
	display: inline;
	}
#block_2
	{
	float: left;
	width: 33%;
	}
#block_3
	{
	float: left;
	width: 34%;
	margin-left: -100%;
	}
/* IE Win can be a bit out - you might need to adjust  
bottom value by -1px or as required */
.verticalalign
	{
	position: absolute;
	bottom: 0;
	}
#block_1 .verticalalign
	{
	width: 33%;
	}
#block_2 .verticalalign
	{
	width: 33%;
	}
#block_3 .verticalalign
	{
	width: 34%;
	}
/* hack for Opera 7+ */
@media all and (min-width: 0px){
.verticalalign
	{
	width: 100% !important;
	}
/* But Opera 9 does it right, so CSS3 hax to the max */
div[id^="wrapper"] #block_1 .verticalalign
	{
	width: 33% !important;
	}
div[id^="wrapper"] #block_2 .verticalalign
	{
	width: 33% !important;
	}
div[id^="wrapper"] #block_3 .verticalalign
	{
	width: 34% !important;
	}
}
/* hack for IEs of all persuasions before IE7 */
* html .verticalalign
	{
	width: 100% !important;
	}
.verticalalign p
	{
	position: absolute;
	bottom: 0;
	right: 0;
	margin: 0;
	padding: 0;
	background: #996666;
	}
#wrapper
	{
	position: relative;
	}
/* we need this for IE 5.01 - otherwise the wrapper does not expand to the
necessary height (unless fixed, this problem becomes even more acute 
weirdness as the method is enhanced */
#wrapper
	{
/* Normally a Holly-style hack height: 1% would suffice but that causes 
IE 5.01 to completely collapse the wrapper - instead we float it */
	float: left;
/* NB. possibly only IE 5.01 needs to get this float value - otherwise 5.5 sometimes 
(I saw it happen many moons ago) makes the width of wrapper too small 
the float: none with the comment is ignored by 5.01,
5.5 and above see it and carry on about their business
It's probably fine to just remove it, but it's left here 
just in case that many moons ago problem rears its head again */
	float/**/: none;
	}
/* easy clearing */
#wrapper:after
	{
	content: '[DO NOT LEAVE IT IS NOT REAL]'; 
	display: block; 
	height: 0; 
	clear: both; 
	visibility: hidden;
	}
#wrapper
	{
	display: inline-block;
	}
/*\*/
#wrapper
	{
	display: block;
	}
/* end easy clearing */
#footer
	{
	clear: both;
	}