Yandex Metrika
sanches.free

Микродвижение иконки избранного на anime.js вместо мгновенного переключения класса

Разбор задачи

Библиотека anime задаёт параметры ключевых кадров декларативно. Ниже — пример нажатия: уменьшенный масштаб затем упругий overshoot без фиксированного тайминга через CSS.

document.querySelectorAll('[data-role=bookmark-toggle]').forEach((btn) => {
  btn.addEventListener('click', () => {
    const svg = btn.querySelector('svg');
    const active = btn.getAttribute('aria-pressed') === 'true';
    anime({
      targets: svg,
      scale: [{ value: 0.92, duration: 90 }, { value: 1.06, duration: 160 }],
      easing: 'easeOutQuad',
    });
    btn.setAttribute('aria-pressed', String(!active));
  });
});

После отправки AJAX в избранное обновляйте класс уже на ответ сервера, чтобы не давать пользователю ложную обратную связь при ошибке сети.

Замечания перед выкладкой

Вносите правки только через среду с бэкапом и понятным diff. Если сниппет идёт в шаблон на Битрикс, проверьте конфликт с уже подключённым jQuery/UI и включите «отложенный» запуск там, где длинный главный файл может обрезать DOMContentLoaded.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии