Блок "Аккордеон" на Getcourse
Аккордеон-блок на геткурсе можно применить для описания популярных вопросов и ответов, мини-инструкций и т.п.
Часто подобный блок можно встретить на продающих страницах, в нем описывают популярные возражения, вопросы, сомнения и закрывают их в раскрывающейся при клике панели.
Данное решение предназначено для использования в визуальном конструкторе на платформе getcourse
Шаг 1. Добавляем CSS блок
/* Подключение шрифта Montserrat 400;600 */
@import url('https://fonts.googleapis.com/css2?family=El+Messiri&family=Montserrat:wght@400;600&display=swap');
:root {
/* Цвет фона плашки */
--ac_bgColor: #ffffff;
/* Цвет заголовка */
--ac_titleColor: #333333;
/* Цвет текста */
--ac_textColor: #777777;
/* Цвет плюса */
--ac_accentColor: #f9ba49;
/* Цвет кружочка плюса */
--ac_lightColor: #fff1d7;
--fontM: "Montserrat", "proxima-nova", sans-serif;
}
.accordeon_block p {
line-height: 1.4;
}
.accordeon_block p,
.accordeon_block div,
.accordeon_block .btn {
font-family: var(--fontM);
}
.accordeon_item {
margin-bottom: 10px;
border: 1px solid #ededed;
border-radius: 5px;
background-color: var(--ac_bgColor);
transition: box-shadow 0.4s ease;
}
.accordeon_item:hover {
box-shadow: 0 15px 25px 0 rgb(0 0 0 / 4%);
transition: box-shadow 0.4s ease;
}
/* Заголовок элемента аккордена */
.accordeon_item>.f-header {
padding: 20px 60px 20px 15px;
border-radius: 5px;
position: relative;
cursor: pointer;
}
.accordeon_item>.f-header p {
margin: 0;
font-size: 20px;
user-select: none;
color: var(--ac_titleColor);
}
/* Оформление плюса(+) */
.accordeon_item>.f-header::after {
content: '+';
position: absolute;
top: 50%;
right: 10px;
transform: translateY(-50%);
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50px;
line-height: 1;
font-size: 36px;
font-weight: 400;
font-family: "Arial", sans-serif;
color: var(--ac_accentColor);
transition: all .4s ease;
}
/* При наведнии на заголовок аккордеона */
.accordeon_item>.f-header:hover:after {
background-color: var(--ac_lightColor);
transition: all .4s ease;
}
/* При активном аккордеоне поворачиваем плюс */
.accordeon_item.active>.f-header:after {
background-color: var(--ac_lightColor);
transform: translateY(-50%) rotate(-45deg);
}
.accordeon_item.active>.f-header:hover:after {
filter: brightness(101%);
}
/* Контейнер контента */
.accordeon_block .ac_content_wrapper {
padding: 5px 15px 15px 15px;
}
/* Текст контента */
.accordeon_block .f-text {
font-size: 16px;
font-weight: 400;
color: var(--ac_textColor);
}
/* Адапатация под моб. экраны */
@media (max-width: 640px) {
.accordeon_item>.f-header {
padding: 15px 50px 15px 15px;
}
.accordeon_item>.f-header p {
font-size: 16px;
}
.accordeon_block .f-text {
font-size: 14px;
}
.accordeon_item>.f-header::after {
right: 5px;
width: 40px;
height: 40px;
font-size: 32px;
}
}Шаг 2. Добавляем блоки контента и проставляем классы
Добавляем блок "Заголовок и текст"
Ставим этому блоку в настройках класс accordeon_block
Для заголовка(который будет заголовком вкладки элемента аккордеона) ставим класс accordeon_item
Контентные элементы ниже заголовка будут относиться к этому заголовку до следующего заголовка с классом accordeon_item
Шаг 3. Добавляем блок с js-кодом
/**
* Script Name: Активация аккордеона в визуальном редакторе Getcourse
* Version: 1.01
* Author: Максим Калмыков
* Url: https://t.me/getcomponent
*/
$(function () {
accordeonInit({
accordeonBlockSelector: '.accordeon_block', // Класс блока с аккордеоном
isBind: false, // Активна только одна вкладка(на которой был клик) (true - да / false - нет)
showFirstItem: true // Открыть первую вкладку (true - да / false - нет)
});
});
function accordeonInit({ accordeonBlockSelector = '.accordeon_block', isBind = false, showFirstItem = false }) {
const acItems = $(accordeonBlockSelector).find('.accordeon_item');
if (acItems.length === 0) return;
acItems.append('<div class="ac_content_wrapper" style="display: none; "></div>');
acItems.each((_, item) => {
$(item).find(".ac_content_wrapper").append($(item).nextUntil(".accordeon_item").not("style"));
$(item).find(".f-header").on("click", function () {
const acItem = $(this).parent();
const acItemContent = $(this).nextAll('.ac_content_wrapper');
console.log('acItemContent', acItemContent)
if (isBind) {
acItem.toggleClass('active').siblings().removeClass('active');
acItem.parent().find('.ac_content_wrapper').slideUp();
if (acItemContent.is(":hidden")) {
acItemContent.slideDown();
}
return;
}
acItem.toggleClass('active');
if (acItemContent.is(":hidden")) {
acItemContent.slideDown();
} else {
acItemContent.slideUp();
}
});
});
if (showFirstItem) {
const firstAcItem = $(`${accordeonBlockSelector} .accordeon_item`).eq(0);
firstAcItem.addClass('active');
firstAcItem.find(".ac_content_wrapper").show();
}
}
В этом месте кода мы активируем аккордеон и можем включить некоторые настройки:
- isBInd - при нажатию на одну вкладку, она открывается а остальные закрываются (true - сделать, false - не делать)
- showFirstItem - Открыть первую вкладку (true - сделать, false - не делать)
Телеграм-канал: https://t.me/getcomponent
Youtube: https://www.youtube.com/channel/UCAVwlN_NSAEFR4mJRpzyvCg