Как добавить кнопку «Показать еще» в блоке с ценами PL310 на Tilda

Как добавить кнопку _Показать еще_ в блоке с ценами PL310 на Tilda
Пошаговая инструкция по добавлению кнопки 'Показать еще' в блок PL310 на Tilda. Узнайте, как адаптировать прайс-лист для мобильных устройств с помощью JavaScript и создать плавные анимации.

Пошаговая инструкция

В этой инструкции мы рассмотрим, как добавить кнопку «Показать еще» в стандартный блок с ценами PL310, которая будет скрывать и показывать вторую колонку на мобильных устройствах.

  1. Добавьте на страницу стандартный блок PL310 «Цены и информация с горизонтальными линиями» из набора Тильда.
  2. Заполните обе колонки блока вашими ценами или услугами. Важно: скрипт будет работать только если заполнены обе колонки блока.
  3. Добавьте на страницу блок T123 «HTML-код» сразу после блока PL310.
  4. В настройках блока T123 вставьте следующий код:

<!--Скрываем вторую колонку с ценами на мобилках и добавляем кнопку "Показать еще"-->
<style>
/*Убираем отступ от первой колонки до кнопки*/
@media screen and (max-width: 960px) {
    .t812__col:first-child {
        margin-bottom: 0px !important;
    }
}
</style>
<script>
// Дождёмся полной загрузки DOM
document.addEventListener('DOMContentLoaded', function() {
    // Функция для проверки ширины экрана
    function isMobile() {
        return window.innerWidth < 768;
    }

    // Получаем основные элементы
    const priceBlock = document.querySelector('.t812');
    const columns = priceBlock.querySelectorAll('.t812__col.t-col.t-col_6');
    const firstColumn = columns[0];
    const secondColumn = columns[1];

    // Добавляем CSS для анимации
    const styleSheet = document.createElement('style');
    styleSheet.textContent = `
        .t812__col.t-col.t-col_6 {
            transition: all 0.4s ease-in-out;
            overflow: hidden;
        }
        
        .t812__col.t-col.t-col_6.hidden-mobile {
            max-height: 0;
            opacity: 0;
            margin: 0;
            padding: 0;
        }

        .price-toggle-btn {
            transition: all 0.3s ease;
            opacity: 0;
            transform: translateY(20px);
        }

        .price-toggle-btn.visible {
            opacity: 1;
            transform: translateY(0);
        }

        .price-toggle-btn:hover {
            background-color: #333333 !important;
        }

        .t812__price-list-wrapper {
            display: flex;
            flex-direction: column;
        }
    `;
    document.head.appendChild(styleSheet);

    // Создаём обёртку для второй колонки и кнопки
    const wrapper = document.createElement('div');
    wrapper.className = 't812__price-list-wrapper';
    
    // Создаём кнопку "Показать ещё"
    const toggleButton = document.createElement('button');
    toggleButton.className = 'price-toggle-btn';
    toggleButton.innerText = 'Показать еще';
    toggleButton.style.cssText = `
        display: none;
        margin: 20px auto 0;
        padding: 10px 30px;
        background-color: #000000;
        color: white;
        border: none;
        border-radius: 30px;
        cursor: pointer;
        font-family: 'Arial', sans-serif;
        font-size: 14px;
        width: 200px;
    `;

    // Перемещаем вторую колонку и добавляем кнопку в обёртку
    secondColumn.parentNode.insertBefore(wrapper, secondColumn);
    wrapper.appendChild(secondColumn);
    wrapper.appendChild(toggleButton);

    // Функция для обработки мобильного вида
    function handleMobileView() {
        if (isMobile()) {
            secondColumn.classList.add('hidden-mobile');
            toggleButton.style.display = 'block';
            // Добавляем небольшую задержку для анимации появления кнопки
            setTimeout(() => {
                toggleButton.classList.add('visible');
            }, 100);
        } else {
            secondColumn.classList.remove('hidden-mobile');
            toggleButton.classList.remove('visible');
            setTimeout(() => {
                toggleButton.style.display = 'none';
            }, 300);
        }
    }

    // Обработчик клика по кнопке
    toggleButton.addEventListener('click', function() {
        const isHidden = secondColumn.classList.contains('hidden-mobile');
        if (isHidden) {
            secondColumn.classList.remove('hidden-mobile');
            toggleButton.innerText = 'Скрыть';
        } else {
            secondColumn.classList.add('hidden-mobile');
            toggleButton.innerText = 'Показать еще';
        }
    });

    // Обработчик изменения размера окна с debounce
    let resizeTimeout;
    window.addEventListener('resize', function() {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(handleMobileView, 100);
    });

    // Инициализация при загрузке
    handleMobileView();
});
</script>

Настройка внешнего вида и поведения скрипта

Чтобы изменить стиль кнопки и другие параметры, найдите в коде следующие места:

Стили кнопки (найдите toggleButton.style.cssText):


// Измените эти параметры для настройки внешнего вида кнопки
background-color: #000000;  // Цвет фона
color: white;              // Цвет текста
border-radius: 3px;        // Скругление углов
width: 200px;             // Ширина кнопки
font-size: 14px;          // Размер шрифта

Анимация (найдите в CSS-блоке):


transition: all 0.4s ease-in-out;  // Изменить скорость анимации (0.4s)

Точка перехода на мобильную версию (найдите функцию isMobile):


function isMobile() {
    return window.innerWidth < 768; // Изменить 768 на нужную ширину
}

Текст кнопок:


toggleButton.innerText = 'Показать еще'; // Текст кнопки "показать"
toggleButton.innerText = 'Скрыть';       // Текст кнопки "скрыть"

Результат

  • На мобильных устройствах (до 768px) вторая колонка будет скрыта
  • Под первой колонкой появится кнопка "Показать еще"
  • При нажатии на кнопку вторая колонка плавно раскроется
  • На десктопе отображение останется без изменений

Теперь ваш прайс-лист будет адаптивным и удобным для просмотра на мобильных устройствах.

Понравилась запись? Оцените!
Оценок: 1 Среднее: 5
Telegram
WhatsApp
VK
Facebook
Email

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

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

Рекомендуем