Hola, tengo varias páginas montadas asi y me funcionan muy bien con jquery:
   Código HTML:
 function carga(script)
{
jQuery('#capamadre').animate({opacity:0},200, function() { jQuery('#contenido').load(script+".php", function() {jQuery('#capamadre').animate({opacity:1},200)})  });
;
}
 Lo que hace esa función es una transición a 0 en opacidad, cuando la transicion termina carga el contenido y una vez cargado le vuelve a poner opacidad a 1, el 200 son los milisegundos. 
Luego pones un link con javascript y poco más 
 Código HTML:
 <a href="JavaScript:carga('contacto')">contacto</a> <!-- esto te cargaría por ejemplo contacto.php-->  Eso si tienes que tener estas capas  
 Código HTML:
 <div id="capamadre">
	<div id="contenido">   
	</div>
</div> 
 Y por supuesto cargar jquery ;) 
saludos