Tutorial: 2 Column CSS With Equal Height DIVs

Here’s a quick post, not so much a tutorial, on something I find myself needing quite frequently these days. You need a 2 column css layout, but you need both columns’ heights to stay the same height regardless of which column has the longer content in it.

The fix: DynamicDrive’s pre-made layout:
2 column css image

See a DEMO of this layout

The HTML Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Dynamic Drive: CSS Fixed Layout #2.2- (Fixed-Fixed)</title>
<style type="text/css">

line-height: 1.5em;

b{font-size: 110%;}
em{color: red;}

width: 840px; /*Width of main container*/
margin: 0 auto; /*Center container on page*/

background: #EAEAEA;
height: 90px; /*Height of top section*/

#topsection h1{
margin: 0;
padding-top: 15px;

float: left;
width: 100%;

margin-right: 200px; /*Set right margin to RightColumnWidth*/

float: left;
width: 200px; /*Width of right column*/
margin-left: -200px; /*Set left margin to -(RightColumnWidth) */
background: #FDE95E;

clear: left;
width: 100%;
background: black;
color: #FFF;
text-align: center;
padding: 4px 0;

#footer a{
color: #FFFF80;

margin: 10px; /*Margins for inner DIV inside each column (to provide padding)*/
margin-top: 0;


<script type="text/javascript">
/*** Temporary text filler function. Remove when deploying template. ***/
var gibberish=["This is just some filler text", "Welcome to Dynamic Drive CSS Library", "Demo content nothing to read here"]
function filltext(words){
for (var i=0; i<words; i++)
document.write(gibberish&#91;Math.floor(Math.random()*3)&#93;+" ")

<div id="maincontainer">

<div id="topsection"><div class="innertube"><h1>CSS Fixed Layout #2.2- (Fixed-Fixed)</h1></div></div>

<div id="contentwrapper">
<div id="contentcolumn">
<div class="innertube"><b>Content Column: <em>Fixed</em></b> <script type="text/javascript">filltext(45)</script></div>

<div id="rightcolumn">
<div class="innertube"><b>Right Column: <em>200px</em></b> <script type="text/javascript">filltext(15)</script></div>


<div id="footer"><a href="http://www.dynamicdrive.com/style/">Dynamic Drive CSS Library</a></div>


Now we need to download the necessary Javascript file to make it stretch.

This is a generic “CSS Equal Columns Height” script that will dynamically set the participating columns’ heights to that of the tallest column’s height, creating a uniform columns height layout. Use this script on any of our CSS Layouts for example. It’s a matter of plug and play! To use this script, just insert this line of code into the HEAD section of your CSS layout page:

<script src="equalcolumns.js" type="text/javascript"></script>

As you can see, it references the external .js file “equalcolumns.js“, which you should download (right click and select “Save As”) and then upload to your own site.

It’s a really simple way to get a good-working 2 column layout that fixes the equal height div problem. I know it relies on javascript, so browsers that have it disabled will not see the effect, but there are other fixes for those cases as well.

One thought on “Tutorial: 2 Column CSS With Equal Height DIVs

Leave a Reply

Your email address will not be published. Required fields are marked *