Как сделать любой блок закрывающимся по клику на любой элемент на Tilda

У Тильды есть стандартный блок с кнопкой Show More для скрытия и показа блока. Но что, если мы хотим показывать или скрывать блоки по клику на свою кнопку или иконку? Ниже рассмотрим простой код для добавления в блок 123, который поможет решить нам эту проблему.

Скрытие и показ блока на Тильде по ссылке

Первым шагом добавьте в блок 123 на Тильде следующий код.

				
					<script>
document.addEventListener("DOMContentLoaded", function(){
(function () {
let shmoreArr = [ '#showmore' , 'uc-showmore' ]; // Ссылка кнопки - Класс блоков для скрытия
let anchor = true; //Скролл до якоря true
let hideBtn = false; //Скрыть кнопку по клику true
let hideBlk = false; //Скрыть блок с кнопкой по клику true
let shmoreBtn = document.querySelectorAll('[href="'+shmoreArr[0]+'"]');
let shmoreBlock = document.querySelectorAll('.'+shmoreArr[1]);
shmoreBlock.forEach(i => i.classList.add("tabshide"));
for (let i = 0; i < shmoreBtn.length; i++) {
    shmoreBtn[i].addEventListener('click', function(event) { 
        this.classList.toggle('more-btn-active');
        if(!anchor) event.preventDefault(); 
        if(hideBtn) this.classList.add('tabshide');
        if(hideBlk) this.closest('.r').classList.add('tabshide');
        shmoreBlock.forEach(i => i.classList.toggle("tabshide"));
        window.dispatchEvent(new Event('resize'));
   });
};
})();

});
</script>

<style>
.tabshide {
    opacity: 0!important;
    min-height: 0!important;
    max-height: 0!important;
    pointer-events: none!important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    overflow: hidden !important;
}
</style>
				
			

Вторым шагом закрепите на кнопке или нужном вам элементе зеро-блока по клику на который будет закрываться блок ссылку #showmore

После завершения всех шагов инструкции, по первому клику на этот элемент блок будет пропадать, а по второму клику – появляться.

Третьим шагом нужно добавить к блокам которые мы хотим скрыть следующий класс – uc-showmore

Если хотим скрыть стандартный блок, нужно добавить название класса в настройках блока

Если хотим скрыть отдельные элементы в Zero-block, то нажимаем правым кликом в редакторе Зероблока.

Финальным шагом сохраняем изменения и публикуем страницу. Код будет работать только на опубликованной странице, в режиме предпросмотра изменений не будет видно.

Как сделать кнопку закрытия для любого блока на Тильде

Второй вариант кода подойдёт например для блока с акцией. Он позволит сделать любой выбранный вами элемент кнопкой закрытия для любого выбранного вами блока.

Первым шагом добавьте в блок 123 на Тильде код предоставленный ниже.

				
					<script>
document.addEventListener("DOMContentLoaded", function() {
    (function() {
        let shmoreArr = ['#showmore', 'uc-showmore'];
        let anchor = true;
        let hideBtn = false;
        let hideBlk = false;
        let shmoreBtn = document.querySelectorAll('[href="'+shmoreArr[0]+'"]');
        let shmoreBlock = document.querySelectorAll('.'+shmoreArr[1]);
        
        let isBlockHidden = localStorage.getItem('isBlockHidden') === 'true';
        
        shmoreBlock.forEach(i => {
            if (isBlockHidden) {
                i.classList.add('tabshide');
            } else {
                i.classList.remove('tabshide');
            }
        });
        
        for (let i = 0; i < shmoreBtn.length; i++) {
            shmoreBtn[i].addEventListener('click', function(event) { 
                this.classList.toggle('more-btn-active');
                
                if (!anchor) event.preventDefault(); 
                
                if (hideBtn) this.classList.add('tabshide');
                if (hideBlk) this.closest('.r').classList.add('tabshide');
                
                shmoreBlock.forEach(i => i.classList.toggle("tabshide"));
                
                localStorage.setItem('isBlockHidden', shmoreBlock[0].classList.contains('tabshide'));
                
                window.dispatchEvent(new Event('resize'));
            });
        };
    })();
});
</script>

<style>
.tabshide {
    opacity: 0!important;
    max-height: 0!important;
    pointer-events: none!important;
    overflow: hidden !important;
}
</style>
				
			

Вторым шагом добавьте на кнопку или нужный вам элемент зеро-блока по клику на который будет закрываться блок или скрываться элемент ссылку #showmore

После завершения всех шагов инструкции, по первому клику на этот элемент блок будет пропадать, а по второму клику – появляться.

Третьим шагом нужно добавить к блокам которые мы хотим скрыть следующий класс – uc-showmore

Если хотим скрыть определенные элементы в Zero-block, то нажимаем правым кликом в редакторе Зероблока.

Если хотим скрыть стандартный блок или зероблок целиком, нужно добавить название класса в настройках блока

Финальным шагом сохраняем изменения и публикуем страницу. Теперь если клиент вашего сайта закроет блок, он больше не будет ему появляться.

Код будет работать только на опубликованной странице, в режиме предпросмотра изменений не будет видно.

Дополнение:

Чтобы блок показывался пользователю вновь после перезагрузки страницы, даже если он его закрыл, нужно убрать сохранение состояния в localStorage. В текущем скрипте состояние скрытия блока сохраняется в localStorage с ключом isBlockHidden. Когда пользователь закрывает блок, эта информация сохраняется и используется для скрытия блока при следующем посещении страницы.

Чтобы изменить это, нужно удалить строки, отвечающие за сохранение и проверку состояния в localStorage. Вот обновлённый скрипт без использования localStorage:

				
					<script>
document.addEventListener("DOMContentLoaded", function() {
    (function() {
        let shmoreArr = ['#showmore', 'uc-showmore'];
        let anchor = true;
        let hideBtn = false;
        let hideBlk = false;
        let shmoreBtn = document.querySelectorAll('[href="'+shmoreArr[0]+'"]');
        let shmoreBlock = document.querySelectorAll('.'+shmoreArr[1]);

        shmoreBlock.forEach(i => {
            // Убираем проверку на сохраненное состояние
            i.classList.remove('tabshide');
        });

        for (let i = 0; i < shmoreBtn.length; i++) {
            shmoreBtn[i].addEventListener('click', function(event) {
                this.classList.toggle('more-btn-active');

                if (!anchor) event.preventDefault();

                if (hideBtn) this.classList.add('tabshide');
                if (hideBlk) this.closest('.r').classList.add('tabshide');

                shmoreBlock.forEach(i => i.classList.toggle("tabshide"));

                // Убираем сохранение состояния в localStorage
                window.dispatchEvent(new Event('resize'));
            });
        };
    })();
});
</script>

<style>
.tabshide {
    opacity: 0!important;
    max-height: 0!important;
    pointer-events: none!important;
    overflow: hidden !important;
}
</style>

				
			

Спасибо за внимание.

Пишите комментарии, делитесь статьёй в социальных сетях с помощью кнопок ниже и подписывайтесь на рассылку в нашем блоге. Мы всегда рады новым гостям!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Другие интересные материалы в нашем блоге
Для чего нужен личный кабинет в интернет-магазине
Бизнес
Личный кабинет в интернет-магазине: как увеличить продажи и удержать клиентов

Личный кабинет в интернет-магазине — это продажи, удобство и лояльность. Разбираем, какие функции важны, как они влияют на поведение покупателей и почему без личного кабинета теряются деньги.

Читать »
Тильда Tilda иллюстрация - блог агентства по разработке сайтов - МАНУФАКТ ПРО
Все статьи
Самая подробная инструкция по стандартным настройкам корзины на Тильде

Как изменить дизайн корзины на Tilda под ваш фирменный стиль и полностью настроить её под ваши задачи. Разбираем стандартные настройки Тильды и рассказываем как изменить корзину Тильды под ваши задачи.

Читать »
Бизнес
Что такое прототипирование и зачем это нужно?

Главное заблуждение о прототипировании: его путают с дизайном, воспринимают прототип как финальный макет (это не так). Прототип – это схематичное расположение блоков. Этакий “скелет” будущего сайта.

Читать »
что такое дропшиппинг
Бизнес
Как открыть дропшиппинг-бизнес в 2024 году: ключевые шаги, кейсы и советы экспертов

Хотите запустить прибыльный дропшиппинг-бизнес без вложений? Узнайте, как выбрать нишу, находить поставщиков для дропшиппинга, работать с маркетплейсами и создавать успешный интернет-магазин с минимальными затратами.

Читать »
3D-иконки с надписью UTM соединены линиями в единую сеть - визуализация системы UTM-меток в маркетинге — blog.manufact.pro
Все статьи
Что такое UTM-метки и зачем они вам нужны

UTM-метки — это специальные «хвосты» в ссылках, которые помогают точно отслеживать источник трафика. Они позволяют анализировать, откуда приходит трафик и какая реклама приносит лучшие результаты.

Читать »
тот самый
Бизнес
Логотип – залог финансового успеха бизнеса

Громкое заявление. В этой статье мы взяли несколько таких заявлений и посмотрели, что говорят данные надежных исследований. Логотип приносит прибыль? Если да, то какой? Что общего между логотипами лидирующих мировых брендов? Читайте в статье.

Читать »
MANUFACT это Digital Agency состоящее из специалистов в различных областях, связанных с разработкой и поддержкой веб-проектов. В нашем корпоративном блоге мы делимся тем полезным, что знаем сами. Знакомьтесь с нами неторопливо и со вкусом, делитесь впечатлениями и узнавайте новое.
Выжимки из наших статей и уникальные материалы мы публикуем в нашем Телгерам-канале. Подписывайтесь, чтобы ничего не пропустить.
Зачитались?

Оставьте свой email и получайте актуальный материал от команды MANUFACT.

НУЖЕН САЙТ ИЛИ РЕКЛАМА?
При заказе сайта в нашей студии, бесплатно настроим эффективную рекламу в Google

Зачитались?

Оставьте нам свой e-mail адрес и получайте актуальный материал от команды MANUFACT