Вы можете использовать функцию переключения Clip-Path CSS Property + JS и, в основном, удвоить ее.
Чтобы понять, как работает Clip-Path, посетите специальный сайт Mozilla для объяснение или этот сайт для тестирования и игры с ним.
function togglemenu(){
document.querySelector("#dropdown").classList.toggle("active");
document.querySelector("#dropdownTwo").classList.remove("active")
}
document.querySelectorAll(".item").forEach(function(item){
item.addEventListener("click", function(){
dropTwo = document.querySelector("#dropdownTwo")
dropTwo.classList.add("active")
dropTwo.innerHTML = this.getAttribute("value")
})
})
#trigger{
background: #555;
color: white;
cursor: pointer;
}
#dropdown{
clip-path: inset(0 0 100% 0);
user-select: none;
transition: 0.5s;
}
#dropdown.active{
clip-path: inset(0 0 0 0);
transition: 0.5s;
/* user-select: all; not necessary unless you really want the user to be able to copy the menu */
}
#dropdownOne{
background: #222;
color: white;
}
#dropdownTwo{
background: #888;
color: white;
clip-path: inset(0 0 100% 0);
user-select: none;
transition: 0.5s;
}
#dropdownTwo.active{
clip-path: inset(0 0 0 0);
transition: 0.5s;
/* user-select: all; */
}
<div id="trigger" onclick="togglemenu()">Click me</div>
<div id="dropdown">
<div id="dropdownOne">
<div class="item" value="7">Dropdown 1</div>
<div class="item" value="2">Dropdown 2</div>
<div class="item" value="9">Dropdown 3</div>
<div class="item" value="1">Dropdown 4</div>
<div class="item" value="5">Dropdown 5</div>
<div class="item" value="8">Dropdown 6</div>
</div>
<div id="dropdownTwo"></div>
</div>
Две важные вещи:
1) Чтобы развернуть раскрывающийся список, необходимо использовать свойство перехода, чтобы оно исчезло.
2) Обязательно отключайте выбор пользователя при закрытом меню, иначе пользователи все равно смогут выбрать текст вашего выпадающего меню и скопировать его, даже если они его не видят.
Наконец, вероятно, есть более короткий и понятный способ сделать это с помощью библиотек и прочего. Но для обучения, делать это классическим способом c, вероятно, лучший способ понять, как все работает.