слайдер из zero-блоков на tilda

[ студия веб-дизайна SHEINA ]
Время чтения: 2 мин.
Просмотров: 50
Иногда стандартного блока слайдера на Тильде недостаточно — хочется больше свободы в дизайне и анимации. Например, сделать карточки с индивидуальной структурой, плавными переходами и собственной логикой переключения. В таких случаях идеально подойдёт кастомный слайдер из зеро-блоков на Тильде, который можно собрать вручную с помощью HTML, CSS и JS.

В этой статье студия SHEINA показывает, как шаг за шагом создать слайдер на Zero-блоках: адаптивный, с кастомной навигацией, автопрокруткой и анимацией. Такой подход позволяет полностью контролировать внешний вид и поведение слайдов — без ограничений готовых шаблонов.

Кастомный слайдер на Tilda легко адаптировать под любой дизайн: добавить изображения, текст, кнопки, видео или динамический контент. Мы делимся примером кода и объясняем, как настроить переходы и плавное движение элементов, чтобы слайдер выглядел профессионально и органично вписывался в структуру сайта.

Как выглядит слайдер из zero-блоков на tilda

Новым клиентам − 10%
Если вы у нас впервые — получите скидку на первый визит. Действует на любые услуги от 1500 ₽.
записаться
Комплекс услуг − 20%
Если вы у нас впервые — получите скидку на первый визит. Действует на любые услуги от 1500 ₽.
записаться
Комплекс услуг − 20%
Если вы у нас впервые — получите скидку на первый визит. Действует на любые услуги от 1500 ₽.
записаться

Как сделать слайдер из zero-блоков на tilda: пошаговая инструкция

Добавляем Zero блок и наполняем его. Это будет наш первый слайд.
1. Добавляем нужные элементы для нашего слайда и обязательно 2 стрелки (левую и правую).
2. Левой стрелке добавляем класс .uc-arrow-left
3. Правой стрелке добавляем класс .uc-arrow-right
4. Всему блоку zero первого слайда задаем класс .uc-slide-1
5. Далее дублируем наш слайд на то количество слайдов, которое нам необходимо.
И задаем каждому слайду (zero-блоку) классы: .uc-slide-2, .uc-slide-3 и т. д.
6. Добавляем код под блоками для слайдера:
<style>
    [class*="uc-slide-"] {
        display: none; 
        opacity: 0; 
        transition: opacity .35s ease; 
    }
    
    .uc-slide-active {
        display: block !important;
        opacity: 1 !important;
    }

    .uc-arrow-left, .uc-arrow-right {
        cursor: pointer;
        user-select: none;
    }
</style>


<script>
    (function(){
        function getSlideNumber(el){
            const m = [...el.classList].join(' ').match(/uc-slide-(\d+)/);
            return m ? parseInt(m[1],10) : null;
        }

        const allSlides = [...document.querySelectorAll('[class*="uc-slide-"]')]
            .filter(el => getSlideNumber(el) !== null);

        if (!allSlides.length) return;

        const groups = [];
        let currentGroup = [];

        allSlides.forEach((el) => {
            const num = getSlideNumber(el);

            if (num === 1 || !currentGroup.length) {
                if (currentGroup.length) groups.push(currentGroup);
                currentGroup = [el];
            } else {
                const expected = getSlideNumber(currentGroup[currentGroup.length - 1]) + 1;
                if (num === expected) {
                    currentGroup.push(el);
                } else {
                    groups.push(currentGroup);
                    currentGroup = [el];
                }
            }
        });
        if (currentGroup.length) groups.push(currentGroup);

        groups.forEach(group => {
            group.forEach(s => s.classList.remove('uc-slide-active'));
            group[0].classList.add('uc-slide-active');

            group.forEach((slide, idx) => {
                const left  = slide.querySelector('.uc-arrow-left');
                const right = slide.querySelector('.uc-arrow-right');

                function show(i){
                    group.forEach(s => s.classList.remove('uc-slide-active'));
                    group[i].classList.add('uc-slide-active');
                }

                if (left)  left.addEventListener('click',  () => {
                    const cur = group.findIndex(s => s.classList.contains('uc-slide-active'));
                    const next = (cur - 1 + group.length) % group.length;
                    show(next);
                });

                if (right) right.addEventListener('click', () => {
                    const cur = group.findIndex(s => s.classList.contains('uc-slide-active'));
                    const next = (cur + 1) % group.length;
                    show(next);
                });
            });
        });
    })();
</script>

Нужна помощь со слайдером из zero-блоков на tilda?

Кастомный слайдер, собранный полностью на Zero-блоках, — это гибкое решение для проектов, где стандартных инструментов Tilda уже не хватает. Такой слайдер создаётся вручную: каждая карточка, стрелка, пагинация и логика переключения настраиваются через Zero, а движение элементов управляется чистым кодом.

Это даёт полную свободу в дизайне: можно использовать любые формы, фотографии, тексты и анимации, создавать уникальные эффекты перехода или автопрокрутку. Слайдер органично вписывается в структуру страницы, корректно работает на адаптиве и остаётся лёгким для редактирования.

Студия SHEINA разрабатывает такие решения под конкретные задачи: аккуратная работа в мобильной версии, плавные переходы, кастомная логика и чистый код без сторонних библиотек.
Дата публикации: 03.11.2025
Студия веб-дизайна SHEINA

 

Полезные статьи

Made on
Tilda