Слайдер на чистом JS нужен совет как оптимизировать

Можно ли как-то сохранить и оптимизировать код данного слайдера? Интересует ревью только js

let buttons = document.querySelectorAll('.slider-button button'),
    blocks = document.querySelectorAll('.list-slider li'),
    slideButton = document.querySelector('.slider-button');

buttons.forEach((button, index) => {
    button.addEventListener('click', function(event){
        let click = index;
        if(event.target.closest('.arrow-button')){
            let active = document.querySelector('.slider-button .slide-button.active'),
                countBlock = 0;
            if(active.closest('li').nextElementSibling.className == 'arrow-slide'){
                clearSlideButton(blocks, buttons);
                blocks[countBlock].classList.add('active');
                buttons[countBlock].classList.add('active');
            }else{
                let li = document.querySelector('.list-slider .slide.active')
                                .nextElementSibling;
                let liButt = active.closest('li')
                                    .nextElementSibling
                                    .firstChild
                                    .nextSibling;
                clearSlideButton(blocks, buttons);
                li.classList.add('active');
                console.log(liButt);
                liButt.classList.add('active');
            }
            return;
        }
        clearSlideButton(blocks, buttons);
        blocks[index].classList.add('active');
        buttons[index].classList.add('active');
    });
})

function clearSlideButton(blocks, buttons, countblock = 0){
    blocks.forEach((block, index) => {
        blocks[index].classList.remove('active');
        blocks[index].classList.remove('content-view');
        buttons[index].classList.remove('active');
    });
}
/**/
    @keyframes leftSlide{
        0% { transform: translateX(-10000px); }
        70% { transform: translateX(30px); }
        90% { transform: translateX(-10px); }
        100% { transform: translateX(0); }
    }

    @keyframes rightSlide{
        0% { transform: translateX(10000px); }
        70% { transform: translateX(-30px); }
        90% { transform: translateX(10px); }
        100% { transform: translateX(0); }
    }

    .wrap-slide{
        display: none;
    }

    .wrap-slide.content-view{
        animation-name: leftSlide;
        animation-duration: 1s;
        display: block;
    }

    .img-view{
        display: none;
    }

    .slide .img-view{
        display: block;
        animation-name: rightSlide;
        animation-duration: 1s;
    }

    .slider-button.anim{
        animation-name: rightSlide;
        animation-duration: 1s;
    }
/**/

.slider{
    background-color: rgba(230, 244, 255, 0.5);
}

.wrap-slider{
    position: relative;
    max-width: 1440px;
    margin: 0 auto;
}

.list-slider{
    max-width: 1440px;
    margin: 0 auto;
}

.slide{
    display: none;
    margin-left: 75px;
}

.slide.active{
    display: flex;
}

.title-slide{
    margin-top: 60px;
    font-family: 'Nunito', 'Century Gohtic', 'Arial';
    font-style: normal;
    font-weight: 600;
    font-size: 36px;
    line-height: 49px;
    color: #27497D;
    margin-bottom: 20px;
}

.content-slide{
    max-width: 530px;
    line-height: 22px;
    font-style: normal;
    margin-right: 130px;
    font-weight: normal;
}

.detailed-slide{
    font-family: 'Nunito', 'Century Gohtic', 'Arial';
    font-style: normal;
    font-weight: bold;
    font-size: 18px;
    line-height: 25px;
    color: #FFFFFF;
    box-shadow: 0px 0px 20px rgba(255, 109, 109, 0.35);
    border-radius: 30px;
    background-color: #FF6D6D;
    padding: 8px 45px 8px 50px;
    margin-top: 40px;
    display: block;
    max-width: 200px;
    box-sizing: border-box;
}

.slider-button{
    position: absolute;
    top: -16px;
    background-color: rgba(0, 0, 0, 0.36);
    left: 735px;
    width: 80px;
    height: 429px;
    padding-top: 170px;
    box-sizing: border-box;
}

.slide-button{
    width: 15px;
    height: 15px;
    border: 2px solid #FFFFFF;
    box-sizing: border-box;
    border-radius: 50%;
    cursor: pointer;
    background-color: rgba(255, 255, 255, 0);
}

.arrow-button{
    width: 15px;
    height: 15px;
    background-image: '<->';
    background-color: rgba(255, 255, 255, 0);
    background-size: 100%;
    cursor: pointer;
    border: none;
}

.arrow-slide{
    margin-top: 123px;
    margin-bottom: 0;
}

.slider-button li{
    text-align: center;
    margin-bottom: 17px;
}

.slide-button.active{
    background-color: rgba(255, 255, 255, 1);
}

ul{
    list-style: none;
}
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
        <section class="slider">
            <div class="wrap-slider">
                <ul class="list-slider">
                    <li class="slide active">
                        <div class="wrap-slide content-view">
                            <h2 class="title-slide">О клинике 1</h2>
                            <p class="content-slide">1Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. В то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов, используя Lorem Ipsum для распечатки образцов. Lorem Ipsum не только успешно пережил без заметных изменений пять веков, но и перешагнул в электронный дизайн.</p>
                            <a href="#" class="detailed-slide">Подробнее</a>
                        </div>
                        <img src="https://via.placeholder.com/705x429" alt="dji" width="705" height="429" class="img-view">
                    </li>
                    <li class="slide">
                        <div class="wrap-slide content-view">
                            <h2 class="title-slide">О клинике 2</h2>
                            <p class="content-slide">2Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. В то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов, используя Lorem Ipsum для распечатки образцов. Lorem Ipsum не только успешно пережил без заметных изменений пять веков, но и перешагнул в электронный дизайн.</p>
                            <a href="#" class="detailed-slide">Подробнее</a>
                        </div>
                        <img src="https://via.placeholder.com/705x429" alt="dji" width="705" height="429" class="img-view">
                    </li>
                    <li class="slide">
                        <div class="wrap-slide content-view">
                            <h2 class="title-slide">О клинике 3</h2>
                            <p class="content-slide">3Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. В то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов, используя Lorem Ipsum для распечатки образцов. Lorem Ipsum не только успешно пережил без заметных изменений пять веков, но и перешагнул в электронный дизайн.</p>
                            <a href="#" class="detailed-slide">Подробнее</a>
                        </div>
                        <img src="https://via.placeholder.com/705x429" alt="dji" width="705" height="429" class="img-view">
                    </li>
                </ul>
                <ul class="slider-button">
                    <li>
                        <button type="button" class="slide-button active"><span class="visually-hidden">slide 1</span></button>
                    </li>
                    <li>
                        <button type="button" class="slide-button"><span class="visually-hidden">slide 2</span></button>
                    </li>
                    <li>
                        <button type="button" class="slide-button"><span class="visually-hidden">slide 3</span></button>
                    </li>
                    <li class="arrow-slide">
                        <button type="button" class="arrow-button"><span class="visually-hidden">next</span></button>
                    </li>
                </ul>
            </div>
        </section>
        <script type="text/javascript" src="script.js"></script>
    </body>
</html>


Ответы (0 шт):