У тебя сейчас происходит моментальная отрисовка позиции градиента при движении мышки. А тебе надо сделать так, чтоб градиент отрисовывался постепенно, стремясь к нужной позиции. То есть ты водишь мышкой, а градиент догоняет. Обычно это делают в requestAnimationFrame, ты можешь ручками написать некоторую функцию, которая будет постепенно менять позицию на N, прибавляя значение к текущей. Но можешь воспользоваться открытой библиотекой для подобных вещей
Anime.js.
Придется посмотреть и разбираться, никто не говорил что будет легко.