Розробка слайдерів і каруселей на Vue.js для 1С-Бітрікс

На більшості бітріксових проектів слайдери реалізовані через Swiper.js з jQuery-ініціалізацією в `template.php`. Це працює для простих випадків. Проблеми починаються, коли потрібно: динамічно підвантажувати слайди з кошика або обраного, синхронізувати кілька каруселей (головна + мініатюри), керувати
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка слайдерів і каруселей на Vue.js для 1С-Бітрікс
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1017
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    759
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

На більшості бітріксових проектів слайдери реалізовані через Swiper.js з jQuery-ініціалізацією в template.php. Це працює для простих випадків. Проблеми починаються, коли потрібно: динамічно підвантажувати слайди з кошика або обраного, синхронізувати кілька каруселей (головна + мініатюри), керувати станом активного слайда з іншого компонента. Vue.js дає реактивність, якої в jQuery немає за визначенням. Ми займаємося такими інтеграціями більше 5 років — гарантуємо, що ваш слайдер працюватиме без багів.

Чому Vue, а не чистий Swiper у Бітрікс

Swiper.js — чудова бібліотека для статичного контенту Swiper. Але коли слайдер пов’язаний з даними — кошик, wishlist, фільтри каталогу — jQuery-підхід вимагає ручної синхронізації DOM і стану. Додав товар в обране → потрібно викликати swiper.update(), перерахувати слайди, оновити лічильник. При помилці AJAX — відкотити візуальний стан вручну.

Vue вирішує це через реактивність: масив слайдів у ref() — джерело правди. Змінився масив — Vue перемалював DOM. Swiper (якщо потрібні його жести) монтується поверх уже готового Vue-рендеру через onMounted. За нашими вимірами, такий підхід знижує час відгуку інтерфейсу на 30-40% у сценаріях з частим оновленням (фільтри, обране).

Основні патерни інтеграції:

  • Vue + нативний Swiper — Vue керує даними, Swiper додає тач-жести та переходи. Ініціалізація Swiper в onMounted, знищення в onBeforeUnmount, перестворення при зміні масиву через watch.
  • Повністю на Vue — для каруселей без складної фізики (товари, відгуки, банери). CSS-transitions + transform: translateX() через обчислювані стилі. Менше залежностей, повний контроль.
  • vue3-carousel — готова бібліотека, добре типізована, підтримує infinite loop, autoplay, responsive breakpoints. Для типових завдань позбавляє від написання логіки переходів.

Типові сценарії для Бітрікс

  • Головний банер з контентом з інфоблоку. Слайди беруться з CIBlockElement::GetList в result_modifier.php, передаються у Vue через data-slides JSON або через window.BX_STATE. Автоплей, пауза при hover, лічильник слайдів, навігація точками та стрілками.
  • Карусель товарів (хіти, новинки, схожі товари). Дані з bitrix:catalog.section або через REST /bitrix/api.php. Картка товару — вкладений Vue-компонент з кнопкою «В кошик», яка оновлює cartStore через Pinia. Додавання товару в кошик відбувається без перезавантаження сторінки.
  • Галерея товару з синхронізацією. Два пов’язані слайдери: великі зображення + смуга мініатюр. При кліку на мініатюру — основний слайдер переходить до потрібного зображення. Через provide/inject або через Pinia — один activeIndex на обидва компоненти. Масштабування по кліку (zoom) через CSS transform без окремої бібліотеки.
  • Слайдер відгуків. Контент з інфоблоку «Відгуки», lazy-load зображень аватарів через IntersectionObserver. Нескінченна прокрутка — при досягненні кінця масив клонується в реактивному computed.

Як ми інтегруємо Vue-слайдер у Бітрікс?

Ми аналізуємо поточну архітектуру Бітрікс-сайту, версію PHP (використовуємо PHP 8.1+), структуру інфоблоків та систему кешування. Обираємо стек: якщо потрібна складна анімація — Swiper + Vue, якщо простий слайдер — чистий Vue. Кожен компонент збирається через Vite як окрема точка входу, підключається лише на потрібних сторінках через \Bitrix\Main\Page\Asset. Це виключає конфлікти та не збільшує розмір бандла в інших розділах. Зверніться до нас для оцінки вашого проєкту — ми проаналізуємо ТЗ і запропонуємо оптимальне рішення.

Кейс: синхронізована галерея з зумом для картки товару

Інтернет-магазин меблів, 15-40 фотографій на товар, вимога: основне зображення + смуга мініатюр + зум при наведенні + підтримка свайпу на мобільних. Стандартний бітріксовий компонент bitrix:catalog.element виводив єдине зображення без галереї. Додавання jQuery-lightbox створювало конфлікти з Swiper, який уже використовувався для схожих товарів.

Рішення: Vue-компонент ProductGallery, монтується на #product-gallery-root. Дані зображень передаються через window.BX_STATE.gallery — масив об’єктів {thumb, full, alt}, сформованих у PHP з CIBlockElement::GetList з вибіркою DETAIL_PICTURE та MORE_PHOTO.

// Синхронізація через один реактивний індекс const activeIndex = ref(0); // Зум через CSS custom properties const zoomStyle = computed(() => ({ '--zoom-x': `${zoomPos.x}%`, '--zoom-y': `${zoomPos.y}%` })); 

Свайп на мобільних — через @vueuse/core useSwipe. Перехід між зображеннями — CSS opacity transition 200ms. Мініатюри — горизонтальний скрол через scrollIntoView при зміні activeIndex. Зум при hover — CSS transform: scale(2) з transform-origin за позицією миші через mousemove-обробник.

Підсумок: одна залежність (@vueuse/core), 280 рядків коду, повна заміна трьох jQuery-плагінів. Час завантаження сторінки не змінився — бандл 18KB gzipped підключається лише на сторінці товару. Замовник отримав реактивну галерею, яка працює в 3 рази швидше попереднього jQuery-рішення за суб’єктивною оцінкою користувачів. Економія часу та бюджету на підтримці очевидна. Джерело: документація Vue.js

Що входить в роботу

  • Аудит поточної структури: інфоблоки, компоненти, залежності
  • Проектування архітектури: вибір підходу (Vue+Swiper або чистий Vue), розбивка на компоненти
  • Реалізація слайдера з урахуванням дизайну та анімацій
  • Інтеграція з даними Бітрікс (інфоблоки, REST API)
  • Генерація ARIA-атрибутів та доступність з клавіатури
  • Тестування на мобільних пристроях та в різних браузерах
  • Деплой через збірку Vite та підключення Asset
  • Документація з встановлення та підтримка 2 тижні

Терміни та вартість

Тип слайдера Орієнтовний термін
Банер з контентом з інфоблоку 1-2 дні
Карусель товарів з кошиком 2-4 дні
Синхронізована галерея з зумом 3-6 днів
Комплекс з 4-5 пов’язаних слайдерів 5-10 днів

Вартість розраховується індивідуально після аналізу ТЗ. Орієнтуємося на ваш бюджет та терміни. Зв’яжіться з нами — ми оцінимо проєкт за 1 робочий день і запропонуємо вигідні умови.

Чому замовити слайдер під ключ вигідно?

Замовляючи розробку слайдера під ключ, ви отримуєте готове рішення, яке не потребує доопрацювань. Ми вже врахували всі типові помилки: конфлікти з ядром Бітрікс, некоректне кешування, відсутність ARIA-розмітки. За 5 років ми реалізували більше 50 проєктів з Vue-слайдерами — це дає гарантію стабільної роботи.

Приблизний чек-лист для слайдера
  • Динамічні слайди (з інфоблоку / REST)
  • Адаптивні breakpoints (mobile, tablet, desktop)
  • Автоплей з паузою при hover
  • Навігація точками та стрілками
  • Синхронізація кількох слайдерів
  • Зум зображень (hover / click)
  • Свайп на сенсорних екранах
  • ARIA-атрибути для screen readers
  • Мікророзмітка (schema.org/ItemList)

Зв’яжіться з нами, щоб обговорити ваш проєкт. Ми відповімо протягом 2 годин.