La vista nueva entra desde el lado hacia el que navegas, y la anterior sale por el contrario.
Todo con transiciones CSS: JavaScript sólo cambia clases y la dirección.
El indicador inferior se desliza con transform: translateX.