<div class="tabs">
<div class="tabs__tabs"><button class="tabs__tab tabs__tab--selected" data-id="tab-1" role="tab">News</button><button class="tabs__tab" data-id="tab-2" role="tab">Aus der Forschung</button></div>
<div class="tabs__panels">
<div class="tabs__panel" id="tab-1" role="tabpanel">
<div class="placeholder placeholder--default">News</div>
</div>
<div class="tabs__panel tabs__panel--hidden" id="tab-2" role="tabpanel">
<div class="placeholder placeholder--default">Aus der Forschung</div>
</div>
</div>
</div>
#{tag || 'div'}.tabs()&attributes(attr)
//- Tabs
.tabs__tabs
each item in items
button.tabs__tab(
class=item.selected && 'tabs__tab--selected',
data-id=item.id,
role='tab',
) #{item.title}
//- Panels
.tabs__panels
each item in items
.tabs__panel(
class=!item.selected && 'tabs__panel--hidden',
id=item.id,
role='tabpanel',
)
+include(`@${item.use}`, item.settings || {})
{
"items": [
{
"selected": true,
"id": "tab-1",
"title": "News",
"use": "placeholder",
"settings": {
"text": "News"
}
},
{
"id": "tab-2",
"title": "Aus der Forschung",
"use": "placeholder",
"settings": {
"text": "Aus der Forschung"
}
}
]
}
document.querySelectorAll('.tabs').forEach((wrap) => {
const tabClick = ({ target }) => {
const { dataset: { id = '' } } = target;
wrap.querySelectorAll('.tabs__tab').forEach(t => t.classList.remove('tabs__tab--selected'));
target.classList.add('tabs__tab--selected');
wrap.querySelectorAll('.tabs__panel').forEach(t => t.classList.add('tabs__panel--hidden'));
wrap.querySelector(`#${id}`).classList.remove('tabs__panel--hidden');
};
const bindTabs = () => {
wrap.querySelectorAll('.tabs__tab').forEach((tab) => {
tab.addEventListener('click', tabClick);
});
};
document.addEventListener('DOMContentLoaded', () => {
bindTabs();
});
});
.tabs__tabs {
border-bottom: 1px solid $color-gray;
display: flex;
flex-wrap: nowrap;
opacity: 1;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: none;
overflow-x: auto;
pointer-events: all;
scrollbar-width: none;
width: 100%;
&::-webkit-scrollbar {
display: none;
}
}
.tabs__tab {
border-bottom: 6px solid transparent;
color: $color-gray;
display: inline-block;
font-family: $font-family-secondary;
font-size: 2.8rem;
font-weight: $font-weight-bold;
letter-spacing: -0.1rem;
line-height: calc(3.2 / 2.8);
padding-bottom: 0.8rem;
transition: color 0.2s;
white-space: nowrap;
@media(hover: hover) and (pointer: fine) {
&:hover {
color: $color-dark;
}
}
&:not(:first-child) {
margin-left: 2.5rem;
@include mq($from: m) {
margin-left: 4rem;
}
}
@include mq($from: m) {
font-size: 3.2rem;
letter-spacing: -0.125rem;
line-height: calc(3.6 / 3.2);
}
@include mq($from: l) {
font-size: 3.8rem;
letter-spacing: -0.15rem;
line-height: calc(4.3 / 3.8);
}
}
.tabs__tab--selected {
border-bottom: 6px solid $color-dark;
color: $color-dark;
}
.tabs__panels {
@include clearfix();
}
.tabs__panel {
padding-top: 3.5rem;
width: 100%;
@include mq($from: m) {
padding-top: 4rem;
}
}
.tabs__panel--hidden {
height: 0;
opacity: 0;
padding-top: 0;
pointer-events: none;
}
There are no notes for this item.