Beachte bitte, dass OnMouseOut auch dann feuert, wenn das Element unter der Maus wegbewegt wird.
Darüber hinaus solltest du nicht die position des elementes als referenz nehmen, sondern besser die position der maus, ob diese über dem element liegt oder nicht. vielleicht hilft dir der denkansporn, dass du die eigentliche "animation" mit semi-elementen (nicht den elementen, die das event auslösen) darstellst? Sodass du stets die grundposition hast, auf der du arbeiten kannst.
Ist nur so ne Idee von mir. Ich könnte dir natürlich problemlos vorschlagen, wie man es schnell, (nicht 100%ig) effektiv und dazu noch dynamisch (leicht anpassbar) erstellen könnte, was aber bestimmt nicht das ziel deiner aufgabe ist, da du das immerhin selbst herausfinden musst. Learning by Doing ;) was du einmal selbst gelöst hast, kannst du später immernoch selber lösen ;)