Non è un problema css, ma del codice javascript.
I div non "scorrono" affatto al insù. E' il div (con il bordo rosso) che semplicemente diventa più piccolo.
Inoltre, a volte ci vuole un click, altre ce ne vogliono due.
Poi la situazione si complica, perché ora te ne sei uscito con una "mappa".Quale mappa?
In che senso?
Intanto t'ho fatto un esempio del tutto diverso QUI . Vedi se ti è utile.