Проблемы с карусельными показателями - PullRequest
0 голосов
/ 05 ноября 2019

У меня проблема с карусельными индикаторами. Я хотел бы иметь "щелчок карусель-индикаторов". Карусель имеет функцию автоматического воспроизведения. Я понятия не имею, как это сделать в Javascript (нажмите на пунктир в карусели и карусель изменит слайд). Заранее спасибо.

HTML

        <div class="slider">
            <img class="slider-img" src="images/slider/slider-1.png" alt=""/>
            <div class="">
                <div class="container main">
                <div class="row">
                    <div class="col-lg-4"></div>
                    <div class="col-lg-8">
                        <p>text</p>
                        <p>- text</p> 
                        <p><a href="#">text</a></p>
                    </div>
                </div>
                <div class="row dots">
                    <div class="col-10 rectangle-left">
                        <span class="rectangle activeSlider" id="one"></span>
                    </div>
                    <div class="col-2 rectangles-right">
                        <span class="rectangle" id="two"></span>
                        <span class="rectangle" id="three"></span>
                        <span class="rectangle" id="four"></span>
                    </div>
                    <div class="newsletter col-10">
                        <div class="panel ">
                            <img src="images/slider/newsletter.png" alt=""/>
                            <span>text</span>
                            <input type="email" placeholder=""/>
                        </div>
                    </div>
                    <div class=" col-2 btn-right">
                        <div class="btnZapisz">text</div>
                    </div>
                </div>
                </div>
            </div>
        </div>

SCSS

.slider {
    position: relative;
    top: -55px;
    height: 100%;
    overflow: hidden;

    &-img {
        width: 100%;
        height: 100%;
    }

    & .main {
        color: #fff;
        text-shadow: 2px 5px 5px #414141;
        position: absolute;
        top: 68%;
        left: 50%;
        transform: translate(-50%, -50%);
        font-weight: bold;

        & p:nth-child(1) {
            font-size: 49px;
            font-weight: bold;
            text-align: left;
            margin-bottom: -29px;
        }
            & p:nth-child(2) {
                font-size: 45px;
                text-align: right;
                letter-spacing: 2px;
                margin-top: 15px;
            }



        & p:nth-child(3){

            font-size: 24px;
            text-align: right;
            letter-spacing: 1px;

            margin-bottom: 240px;
            & a{
                color: white;
                text-decoration: none;
            }
        }

            & .dots{

               & .rectangle-left{
                    display: flex;
                    justify-content: flex-end;
                    margin-bottom: 15px;

                    padding-right: 0px;
               }

               & .rectangles-right{
                    display: flex;
                    justify-content: space-between;
               }

                    & .rectangle {
                        display: inline-block;
                        background-color: #fff;
                        margin-left: 8px;
                        width: 38px;
                        height: 14px;
                        cursor: pointer;

                        &.activeSlider {
                            background-color: $blue;
                        }

                    }

                    & .newsletter {
                        padding-right: 0;

                        & .panel {
                            display: flex;
                            align-items: center;
                            height: 90%;
                            padding: 5px 0;
                            background-color: #fff;



                            & span {
                                font-size: 20px;
                                margin-right: 10px;
                                color: $blue;
                                letter-spacing: 1px;
                                text-shadow: none;
                            }

                            & input {
                                width: 370px;
                                font-weight: bold;
                                padding-left: 7px;
                                border: 1px solid #ccc;
                                padding: 3px 0;
                            }
                        }

                    }

                    & .btn-right{
                        display: flex;
                        justify-content: flex-end;

                        & .btnZapisz {                          
                            width: 94%;
                            height: 90%;

                            display: flex;
                            justify-content: center;
                            align-items: center;
                            font-size: 20px;
                            background-color: #fff;
                            text-shadow: none;
                            color: $blue;
                            border: none;
                            cursor: pointer;
                        }
                    }
            }

    }

}

const slideList = [{
    img: "images/slider/slider-1.png",
}, {
    img: "images/slider/slider-2.png",
}, {
    img: "images/slider/slider-3.png",
}, {
    img: "images/slider/slider-2.png",
}];


const image = document.querySelector('.slider-img');
const dots = [...document.querySelectorAll('.rectangle')];

let time = 1500;
let active = 0;

const changeDot = () => {
    const activeDot = dots.findIndex(dot => dot.classList.contains('activeSlider'));
    dots[activeDot].classList.remove('activeSlider');
    dots[active].classList.add('activeSlider');
}

const changeSlide = () => {
    active++;
    if (active === slideList.length) {
     active = 0;
    }
    image.src = slideList[active].img;
    changeDot();
 }
   let indexInterval = setInterval(changeSlide, time);


// const ClickChangeSlide = (e) => {

//     console.log(e.target);
//     clearInterval(indexInterval);
//     e.target.classList.add('activeSlider');    

//     if (active === slideList.length) {
//         active = 0;
//        } else if (active < 0) {
//         active = slideList.length - 1;
//        }

//      image.src = slideList[active].img;
//      changeDot();
//      indexInterval = setInterval(changeSlide, time);
//    }  
//    window.addEventListener('click', ClickChangeSlide );

В функции с комментариями я не могу написать мою проблему: /

...