data-dynamic=switcher
Короче простой гайд для тех, кому нужны такие табы:[div=custom-tabs]
[div=active to-process data-dynamic=switcher data-switcher=ctab]Таб1[/div]
[div=to-process data-dynamic=switcher data-switcher=ctab]Таб2[/div]
[div=to-process data-dynamic=switcher data-switcher=ctab]Таб3[/div]
[div=CUSTOM_PANELS_CONTAINER]
[div=CUSTOM_PANEL]Контент 1[/div]
[div=CUSTOM_PANEL]Контент 2[/div]
[div=CUSTOM_PANEL]Контент 3[/div]
[/div]
[/div]
[div=custom-tabs]
[div=active to-process data-dynamic=switcher data-switcher=ctab]Таб1[/div]
[div=to-process data-dynamic=switcher data-switcher=ctab]Таб2[/div]
[div=to-process data-dynamic=switcher data-switcher=ctab]Таб3[/div]
[div=CUSTOM_PANELS_CONTAINER]
[div=CUSTOM_PANEL]Контент 1[/div]
[div=CUSTOM_PANEL]Контент 2
[div=custom-tabs]
[div=active to-process data-dynamic=switcher data-switcher=ctab2_1]Таб1[/div]
[div=to-process data-dynamic=switcher data-switcher=ctab2_1]Таб2[/div]
[div=to-process data-dynamic=switcher data-switcher=ctab2_1]Таб3[/div]
[div=CUSTOM_PANELS_CONTAINER]
[div=CUSTOM_PANEL]Контент 1[/div]
[div=CUSTOM_PANEL]Контент 2[/div]
[div=CUSTOM_PANEL]Контент 3[/div]
[/div]
[/div]
[/div]
[div=CUSTOM_PANEL]Контент 3[/div]
[/div]
[/div]
Enter
), а затем в вставьте во вторую строку полный код табов еще раз, так чтобы сверху и снизу от вложенных табов осталась пустая строка для удобства восприятия. Затем замените код data-switcher
на любой другой. В данном примере это ctab2_1
— означает что это 1-е вложенные табы во 2-й вкладке табов с названием ctab.data-switcher
!data-switcher
. Тут, например, указан код ctab
, а у других табов на этой же странице необходимо указывать другой код. Например, ctab2
.active
), чтобы вкладки отображались. Вы можете убрать этот класс, если хотите более быстрой загрузки или сохранения места на странице.CUSTOM_PANELS_CONTAINER
. Отдельный контейнер нужен для удобства подсчётов в CSS. Классы для контейнера и самих вкладок указаны для наглядности и понимания кода — обычно в коде чёрт ногу сломит, но с большими надписями не пропадёте. Если это не удобно для вас — можете удалить или заменить, на CSS это не повлияет./* СТИЛИ ТАБОВ */
.custom-tabs {
display: grid; /* для работы колонок */
grid-template-columns: 200px 1fr; /* 200px — ширина кнопок */
grid-auto-rows: minmax(0, max-content); /* автовысота строк */
border: 1px solid; /* граница табов */
}
/* Стили кнопок */
.custom-tabs > [data-dynamic] {
grid-column: 1; /* кнопки располагаются в первой колонке */
padding: 4px 12px; /* большие кнопки */
cursor: pointer;
}
/* Активная кнопка */
.custom-tabs > [data-dynamic].active {
font-weight: bold; /* активная = жирная кнопка */
}
/* Стили контейнера вкладок */
.custom-tabs > div:not([data-dynamic]) {
grid-column: 2; /* контейнер помещается во вторую колонку */
grid-row: 1 / 9999; /* растягивается на 9999 строк вниз */
border-left: 1px solid; /* полоска для визуального разграничения */
}
/* Стили вкладок */
.custom-tabs > div > div {
display: none; /* по умолчанию скрыто */
padding: 4px 12px; /* отступы от краёв контейнера */
}
/* Настройка отображения вкладок */
/* когда кнопка 1 активна (.active) ~ вкладка 1 отображается */
.custom-tabs > .active:nth-child(1) ~ div > div:nth-child(1),
/* когда кнопка 2 активна (.active) ~ вкладка 2 отображается */
.custom-tabs > .active:nth-child(2) ~ div > div:nth-child(2),
/* идею поняли, если нужно больше 9 вкладок, добавляйте по этой схеме */
.custom-tabs > .active:nth-child(3) ~ div > div:nth-child(3),
.custom-tabs > .active:nth-child(4) ~ div > div:nth-child(4),
.custom-tabs > .active:nth-child(5) ~ div > div:nth-child(5),
.custom-tabs > .active:nth-child(6) ~ div > div:nth-child(6),
.custom-tabs > .active:nth-child(7) ~ div > div:nth-child(7),
.custom-tabs > .active:nth-child(8) ~ div > div:nth-child(8),
.custom-tabs > .active:nth-child(9) ~ div > div:nth-child(9) {
display: block;
}
display: grid;
позволяет легко создать нужные для вертикальных табов колонки. Если вам нужны горизонтальные табы, то удаляйте всё связанное с колонками, а для кнопок добавляйте свойство display: inline-block;
.>
выделяющий только дочерние элементы..custom-tabs > [data-dynamic]
)::hover
и :active
.:nth-child(n)
у кнопок и вкладок совпадали. По умолчанию вкладки скрыты и отображаются только при активной вкладке. Ограничение этого стиля — всего 9 вкладок, но добавить новые не составит труда.@import url("https://css-club.web.app/css/custom_tabs.css");
В этом импорте всё тоже самое, только без комментариев и с бОльшим количеством возможных вкладок (20). Вы можете использовать импорт, чтобы не сломать ничего важного и спокойно добавлять свои стили после него.