Sale - 5%
00 : 00 : 00 : 00
ден : час : мин : сек
изменится через
Our Website is Almost Ready
Launch a targeted campaign.
Scale your infrastructure with our simple service.
Days
Hours
Minutes
Seconds
Learn more

Как при смене вкладки TX16N2 отобразить нужный баннер в ZeroBlock в Tilda

Чтобы реализовать смену баннера ZeroBlock Tilda при смене вкладки TX16N2 , следуйте этой пошаговой инструкции:
Как при смене вкладки TX16N2 отобразить нужный баннер галерею в ZeroBlock в Tilda
1. Создали ZeroBlock и добавили в него четыре элемента Gallery, присвоив им классы:
acc_zeroslider1, acc_zeroslider2 и далее по аналогии.
2. Для блока установили высоту 0 px и активировали параметр overflow: visible.
Галереи выровняли по правой стороне.
3. Добавили блок TX16N2 с четырьмя вкладками и назначили ему класс uc-accordion.
Параметры блока:
  • 4 колонки
  • Первая карточка открыта по умолчанию
  • Режим «Аккордеон»
  • Одновременно отображается только одна раскрытая вкладка
4. Вставили необходимый код в блок «Другое» (T123).
<!-- Как при смене вкладки TX16N2 отобразить нужный баннер галерею в ZeroBlock в Tilda https://tbmsc.ru/

<script>
document.addEventListener('DOMContentLoaded', () => {

  const sliders = Array.from(document.querySelectorAll('[class*="acc_zeroslider"]'));
  const accordionItems = document.querySelectorAll('.uc-accordion .t668__accordion');

  if (!sliders.length || !accordionItems.length) return;

  // Назначаем индекс каждому слайдеру
  sliders.forEach((slider, i) => {
    slider.dataset.sliderIndex = i;
    if (i !== 0) slider.classList.add('zb-hidden');
  });

  const closeAllSliders = () => {
    sliders.forEach(slider => slider.classList.add('zb-hidden'));
  };

  const openSliderByIndex = (index) => {
    const target = sliders.find(s => Number(s.dataset.sliderIndex) === index);
    if (!target) return;

    closeAllSliders();
    target.classList.remove('zb-hidden');
  };

  accordionItems.forEach((item, index) => {

    item.addEventListener('click', () => {

      const header = item.querySelector('.t668__header');

      // Ждём пока Tilda добавит/удалит класс opened
      requestAnimationFrame(() => {
        setTimeout(() => {

          const isOpen = header.classList.contains('t668__opened');

          if (isOpen) {
            openSliderByIndex(index);
          } else {
            closeAllSliders();
          }

        }, 250);
      });

    });

  });

});
</script>

<style>

/* Поведение колонок */
.uc-accordion .t668__col {
  display: block;
  float: none;
}

/* Плавное появление */
[class*="acc_zeroslider"] {
  opacity: 1;
  transition: opacity .35s ease, visibility .35s ease;
}

.zb-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* Вертикальный аккордеон */
.uc-accordion .t668 > .t-container {
  display: flex;
  flex-direction: column;
}

/* Блокируем повторный клик по открытому пункту */
.uc-accordion .t668__header.t668__opened {
  cursor: default;
  pointer-events: none;
}

/* Убираем изображения в десктопе */
@media (min-width: 1000px) {
  .uc-accordion img.t668__img {
    width: 0;
    height: 0;
    overflow: hidden;
  }
}

</style>
Made on
Tilda