@raknet181016

Не работают кнопки js. Как исправить?

Я хотел бы, чтобы при новом клике на кнопку предыдущие content`ы закрывались, а не накладывались друг на друга

HTML
<div class="buttons" id="buttons">
        <div class="button" id="b1">
            Главное
        </div>
        <div class="button" id="b2">
            Обо мне
        </div>
        <div class="button" id="b3">
            Портфолио
        </div>
        <div class="button" id="b4">
            Мои услуги
        </div>
        <div class="button" id="b5">
            Контакты
        </div>
    </div>
    <div class="info">
        <div class="info__content" id="c1">Главное</div>
        <div class="info__content" id="c2">Обо мне</div>
        <div class="info__content" id="c3"> Портфолио</div>
        <div class="info__content" id="c4">Мои услуги</div>
        <div class="info__content" id="c5"> Контакты</div>
    </div>


CSS
.button {
            color: white;
            font-size: 20px;
            height: 50px;
            width: 200px;
            background-color: black;
            margin-top: 10px;
            align-items: center;
            text-align: center;
            padding-top: 8px;
            cursor: pointer;
            transition: all 1s;
            -webkit-transition: all 1s;
            -moz-transition: all 1s;
            -ms-transition: all 1s;
            -o-transition: all 1s;
            cursor: pointer;
            -webkit-touch-callout: none;
            -webkit-user-select: none;
            -khtml-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
        }
        
        .button:hover {
            width: 250px;
        }
        
        .info__content {
            background-color: #000;
            color: white;
            width: 700px;
            height: 550px;
            position: absolute;
            left: 450px;
            top: 50px;
            display: none;
        }
        
        .active {
            display: block;
        }


JS

let buttons = document.getElementById('buttons');
let button = document.querySelectorAll('div.button');
let contents = document.querySelectorAll('info__content');

buttons.addEventListener('click', function(event) {
    for (let i of contents) {
        i.classList.remove('active')
    }

    let el = event.target.id;
    str = el.replace("b", "c");
    str = document.getElementById(str)

    str.classList.toggle('active')
})
  • Вопрос задан
  • 271 просмотр
Пригласить эксперта
Ответы на вопрос 1
mizutsune
@mizutsune
Frontend Developer
Если вам нужны табы, то их можно написать как-то так:



В итоге можно создавать несколько контейнеров с табами на одной странице, переключать активные классы не только у панелей, но и у кнопок, и возможно дополнить функционал какими-нибудь дополнительными функциями.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы