При наведении происходят непонятные скачки
Понятные. Изменение положения элемента
.box-inner завязано на его же
:hover, так что когда он уезжает из-под курсора, состояние
:hover теряется, элемент откатывается назад, под курсор, снова случается
:hover, элемент опять едет вверх, ну и т.д. Надо смотреть
:hover у элемента, который из-под курсора никуда не девается, т.е., у родительского:
.box:hover .box-inner {
margin-top: -360px;
}
Также, как сделать, чтобы при убирании курсора все возвращалось обратно плавно, а не резким скачком?
Аналогично -
transition должен присутствовать у элемента вне зависимости от наличия состояния
:hover:
.box-inner {
transition: all 500ms ease;
}