To resolve the issue in Chrome, Firefox, IE9 and Safari, I made a simple change to the HTML below by adding style="font-size:0"
. This trick addresses a situation where a browser incorrectly interprets the height of a row of text.
<div class='fancy_image'>
<div class='shadow' style='border:2px solid; float:left;padding:5px;margin:10px;'>
<div style="font-size: 0;">
<img class='fade' src="http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg" width=300 height=200 />
</div>
</div>
</div>
To see this fix in action, check out: http://jsfiddle.net/jfriend00/8FkmG/. The padding set in your HTML controls the white space surrounding the image.
Your mix of floats, positioning, and using span for positioning in your HTML/CSS is quite unusual and can be improved.