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