Обновление версий Stickybits

Stickybits — это лёгкая библиотека для создания «липких» элементов на странице, которая работает поверх стандартного CSS position: sticky и обеспечивает кроссбраузерную совместимость, включая поддержку старых версий Safari и iOS. Одним из ключевых аспектов при работе с Stickybits является управление версиями и понимание изменений между ними, чтобы избежать конфликтов и неожиданных ошибок при обновлениях.


Проверка текущей версии

Для начала необходимо определить, какая версия Stickybits используется в проекте. Если библиотека подключена через npm, можно использовать команду:

npm list stickybits

Она вернёт точную версию установленного пакета. При подключении через CDN версия обычно указывается в URL:

<script src="https://unpkg.com/stickybits@3.7.6/dist/stickybits.min.js"></script>

В данном примере используется версия 3.7.6. Это важно, поскольку API Stickybits и набор доступных опций могут меняться от версии к версии.


Основные изменения между версиями

Stickybits развивается с учётом новых стандартов CSS и улучшений производительности. Различия между крупными версиями обычно включают:

  1. Опции и параметры инициализации

    • В ранних версиях (<=2.x) доступна была минимальная настройка: stickybits(selector, options).
    • В версии 3.x добавлены новые параметры, такие как useStickyClasses, stickyBitStickyOffset, noStyles.
    • Важно проверять совместимость старых скриптов с новыми опциями, чтобы не возникало ошибок и дублирования стилей.
  2. Методы управления элементами

    • Ранее можно было только инициализировать и удалять sticky-блоки.
    • В последних версиях добавлены методы .update() для пересчёта позиции и .cleanup() для полного удаления следов Stickybits со страницы.
  3. Кроссбраузерная поддержка

    • Версия 2.x могла некорректно работать на iOS 12 и Safari 13.
    • В версии 3.x исправлены баги с расчётом высоты элемента и паддингов в мобильных браузерах.

Процесс обновления

Обновление Stickybits можно проводить двумя способами: через npm или заменой скрипта CDN.

Через npm:

npm install stickybits@latest

Затем необходимо проверить пакет package.json и убедиться, что версия изменилась:

"dependencies": {
  "stickybits": "^3.7.6"
}

Через CDN: Достаточно заменить старый URL на новый, указав последнюю стабильную версию, доступную на unpkg или jsDelivr.


Совместимость старого кода с новой версией

При обновлении с версии 2.x на 3.x стоит обратить внимание на:

  • Смена имени опций: некоторые параметры были переименованы для большей читаемости (stickyBitStickyOffset вместо stickyBitOffset).
  • Добавление новых классов: новые версии по умолчанию добавляют классы .js-is-sticky и .js-is-stuck. Если старый CSS не учитывает их, поведение элементов может отличаться.
  • Метод .update(): если на странице динамически меняется контент, после обновления блоков необходимо вызвать .update() для пересчёта позиции sticky-элементов.

Пример обновления кода:

// Старый вариант (v2.x)
stickybits('.my-element');

// Новый вариант (v3.x)
const stickyInstance = stickybits('.my-element', {
  useStickyClasses: true,
  stickyBitStickyOffset: 10
});

// При динамическом изменении контента
stickyInstance.update();

Проверка после обновления

После обновления важно:

  1. Проверить корректность позиционирования всех sticky-элементов в разных браузерах.
  2. Убедиться, что кастомные стили и классы не конфликтуют с новыми классами Stickybits.
  3. Протестировать поведение при скролле на мобильных устройствах и с изменением размеров окна.

Рекомендации по стабильности

  • Использовать точную версию библиотеки в проекте, чтобы исключить неожиданные изменения при автоматическом обновлении.
  • Перед обновлением проводить тестирование на локальной копии проекта.
  • Для динамически загружаемых элементов вызывать .update() после каждой модификации DOM.
  • Ознакомиться с релизами Stickybits для понимания исправленных багов и новых возможностей.

Обновления Stickybits обеспечивают более стабильное поведение липких элементов, но требуют внимательного подхода к совместимости и использованию новых методов и опций.