Najtrudniejsze w takich menu jest nie zrobienie tego od strony technicznej, tylko raczej zrobić to w ten sposób, żeby nie wkurzyć użytkownika (zwykle jest tak, że człowiek najeżdża na pozycję w menu, potem przesuwa kursor, niechcący wyleci myszą poza prostokąt menu i menu się chowa. I jeszcze raz trzeba. I tak dalej. Im więcej poziomów menu - niektórzy robią nawet kilku poziomowe menu - tym gorzej).
Z tego powodu nie jestem fanem tego typu rozwiązań, ale jeśli miałbym robić, to zadbałbym o to, żeby takie menu nie znikało co chwila.
Najgłupsze menu można zrobić w kilka minut, wsadzając do pozycji w menu ukrytego diva, który się na :hover
będzie pokazywał - to można w CSS zrobić. Tylko znowu - taka naiwna implementacja będzie słaba. Może więc należałoby zadbać o jakieś opóźnienie, albo o łapanie zdarzenia mouseLeave w JS gdzieś wyżej w hierarchii elementów, np. traktować cały obszar pod menu, jako menu, i chować menu tylko jak użytkownik wyjedzie naprawdę daleko? (na serio, wykrywanie momentu kiedy należy pokazać, a kiedy schować menu, to najtrudniejsza rzecz w implementacji, bo związana z UX, a nie tylko z JS/CSS).
Tylko znowu - trzeba jeszcze zbadać jak będzie to na mobilkach działać...