Добавьте это правило к вашему CSS:
.menu > li {
position: relative;
}
Объяснение: если вы укажете position: absolute
для элемента, top
и left
будут относиться к первому родительскому элементу, который имеет любой position
, отличный от static
. Если такой элемент не найден, он будет относительно страницы (как в вашем случае). Указание position: relative
является самым простым решением, поскольку элемент не будет извлечен из потока документов.