Есть простой способ достичь этого с умным HTML и CSS.
Сначала HTML:
<div id="container">
<div id="col1">
this is column 1
</div>
<div id="col2">
this is column 2<br />
it is obviously longer than the first column <br />
YEP!
</div>
</div>
Обратите внимание на отсутствие ясности: оба несемантических дел.
Теперь CSS:
#container { background:#f0f; overflow:hidden; width:400px; }
#col1, #col2 { float:left; width:50%; }
#col2 { background:#ff0; }
Переполнение, скрытое в правиле контейнера, гарантирует, что контейнер расширится до размера содержащихся в нем плавающих элементов div (и избавится от несематического очистного элемента div, который все так любят).
Фон контейнера относится к первому столбцу. Фон div col2 применяется только ко второму div. Это то, что дает нам иллюзию, что оба div всегда имеют одинаковую высоту.
Простое семантическое решение в 3 строки CSS. Наслаждайтесь
РЕДАКТИРОВАТЬ: Пожалуйста, прокомментируйте причину для голосования, в противном случае я должен догадаться, почему мой ответ неправильный. В этом случае я забыл добавить свойство ширины в контейнер, чтобы оно хорошо сочеталось с IE6 / 7. Пожалуйста, проверьте исправленный CSS выше.