Как у bootstrap tabs 5 > версий сделать несколько тел на одну кнопку?
Здравствуйте.
Подскажите как получить возможность иметь несколько тел в bootstrap табах? Нужно: - Чтобы изначально отображались все тела которые принадлежат первой кнопке. - Чтобы не было задержки у остальных тел при нажатии на кнопку, все тела должны показываться одновременно. - Чтобы на одну кнопку можно было назначать N кол-во тел. - Чтобы якорей не было совсем !!! и при нажатии на кнопку, текущая позиция оставалась неизменной. Только Vanilla JS |
цель просто получить несколько тел для bootstrap табов. Без якорей
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
<div class="tabs">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" href="#" data-tab-pane="#first-1, #first-2, #first-3, #first-4">First</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" data-tab-pane="#second-1, #second-2, #second-3">Second</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" data-tab-pane="#third-1, #third-2, #third-3, #third-4, #third-5">Third</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="first-1" role="tabpanel">This</div>
<div class="tab-pane active" id="first-2" role="tabpanel">Is</div>
<div class="tab-pane active" id="first-3" role="tabpanel">First</div>
<div class="tab-pane active" id="first-4" role="tabpanel">Tab</div>
<div class="tab-pane" id="second-1" role="tabpanel">Is</div>
<div class="tab-pane" id="second-2" role="tabpanel">Second</div>
<div class="tab-pane" id="second-3" role="tabpanel">One</div>
<div class="tab-pane" id="third-1" role="tabpanel">And</div>
<div class="tab-pane" id="third-2" role="tabpanel">This</div>
<div class="tab-pane" id="third-3" role="tabpanel">Is</div>
<div class="tab-pane" id="third-4" role="tabpanel">Last</div>
<div class="tab-pane" id="third-5" role="tabpanel">One</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
const TAB_CONTROL_ACTIVE_CLASS_NAME = 'active';
const TAB_PANE_ACTIVE_CLASS_NAME = 'active';
document.querySelectorAll('.tabs').forEach(wrapper => {
const controls = wrapper.querySelectorAll('.nav-tabs .nav-link[data-tab-pane]');
controls.forEach(control => {
control.addEventListener('click', e => {
e.preventDefault();
if (control.classList.contains(TAB_CONTROL_ACTIVE_CLASS_NAME)) {
return;
}
controls.forEach(item => item.classList.remove(TAB_CONTROL_ACTIVE_CLASS_NAME));
control.classList.add(TAB_CONTROL_ACTIVE_CLASS_NAME)
wrapper.querySelectorAll(`.tab-pane.${TAB_PANE_ACTIVE_CLASS_NAME}`).forEach(pane => {
pane.classList.remove(TAB_PANE_ACTIVE_CLASS_NAME);
});
control.dataset.tabPane?.split(',').forEach(selector => {
wrapper.querySelector(selector)?.classList.add(TAB_PANE_ACTIVE_CLASS_NAME);
});
});
});
});
});
</script>
|
Цитата:
|
WebMachine, ванильнее некуда.
|
Цитата:
|
| Часовой пояс GMT +3, время: 19:16. |