+1  A: 

without touching the CSS, you could get jQuery to do everything for you.

$('.overlay').fadeTo(0,0); //hide the images to start with
$('.image').hover(function(){
        $(this).children('.overlay').fadeTo(200,1)},
    function(){
        $(this).children('.overlay').fadeTo(200,0)}
);
Moin Zaman
This works really nicely, thanks for your help buddy, keep it up
Chrish
+2  A: 

The div's are now block elements, and they have no height because they are filled by floats/absolute positioned elements.

Change:

#columns .column .image {
   position:relative;
 width:100%;
}

To:

#columns .column .image {
  float:left;
  position:relative;
}

And you should get something much closer to what you want. It might need some tweaking after this.

Justus Romijn
That worked perfectly, thanks for your help! Needs tweaking like you said, but it's all sorted now.
Chrish
A margin-bottom: 4px makes it already a bit more pretty :)
Justus Romijn
Yeah that's what I did! I just need to do the jQuery bit now
Chrish