Если нужна задержка на css, то есть свойство
transition-delay
А на JS
setTimeoutт.е, если пользователь убрал курсор мышки с элемента меню, то она не появилось.
Как мне кажется можно сделать все на css:
.menu .submenu {
opacity: 0; /* По умолчанию скрываем подменю */
visibility: hidden;
transition-property: opacity, visibility; /* Задаем какие свойства анимировать */
transition-duration: .3s, .3s; /* Задаем продолжительность анимации для каждого свойства */
transition-delay: .15s, .15s; /* Задаем задержку анимации для каждого свойства */
}
.menu .menu-item:hover .submenu {
opacity: 1; /* Показываем подменю при ховере */
visibility: visible;
}