Готовые решения есть всегда, тут можно все реализовать с помощью display: none/class & JS. В html элементах, которые относишь к "скрытым" - прописываешь свойство стилей
<button style='display: none;'>Кнопка</button>
.
Дальше уже вешаешь обработчик событий на элемент. При наведении на элемент срабатывает функция-обработчик, в ней прописываешь смену display с none, на block/inline-block/flex/grid; Делаешь условие, что если курсор вышел из области - сбросить стили до display: none; Как пример, можешь еще попробовать сделать через класс active/inactive. Вместо кнопки можешь сделать спокойно изображение или что-то другое, просто меняешь на что-то свое, в любом случае, делегирование тебе поможет.