Можно например внутри элемента с сердечком создать прозрачный абсолютно спозиционированный оверлей; при попадании на него курсора мыши 1) включать анимацию сердечка и 2) устанавливать скорость анимации и цвет сердечка в зависимости от расстояния до центра оверлея
Апдейт: СДЕЛАЛ ЧЁРТОВ ПРИМЕР! Полтора дня делал. Вот:
https://jsfiddle.net/lucifer63/41y3qdu9/
Это эталонный пример говнокода, но я чо-то не смог проще сделать