Несколько слайд-шоу в html / css / js

#javascript #html #css

Вопрос:

Я пытаюсь создать несколько слайд-шоу на своем веб-сайте, используя какой-то старый код w3schools. Проблема с их кодом заключается в том, что он допускает только одно слайд-шоу на страницу, что не совсем то, к чему я стремлюсь. Чтобы было понятно, я хочу иметь бесконечное количество слайд-шоу на странице, но я не хочу копировать и вставлять свой код несколько раз, если это возможно

CSS:

 * {
    box-sizing: border-box;
}

/* Position the image container (needed to position the left and right arrows) */
.container2 {
    position: relative;
}

/* Hide the images by default */
.mySlides {
    display: none;
}

/* Add a pointer when hovering over the thumbnail images */
.cursor {
    cursor: pointer;
}

/* Next amp; previous buttons */
.prev,
.next {
    cursor: pointer;
    position: absolute;
    top: 40%;
    width: auto;
    padding: 16px;
    margin-top: -50px;
    color: white;
    font-weight: bold;
    font-size: 20px;
    border-radius: 0 3px 3px 0;
    user-select: none;
    -webkit-user-select: none;
}

/* Position the "next button" to the right */
.next {
    right: 0;
    border-radius: 3px 0 0 3px;
}

/* On hover, add a black background color with a little bit see-through */
.prev:hover,
.next:hover {
    background-color: rgba(0, 0, 0, 0.8);
}

/* Number text (1/3 etc) */
.numbertext {
    color: #f2f2f2;
    font-size: 12px;
    padding: 8px 12px;
    position: absolute;
    top: 0;
}

/* Container for image text */
.caption-container {
    text-align: center;
    background-color: #222;
    padding: 2px 16px;
    color: white;
}

.row:after {
    content: "";
    display: table;
    clear: both;
}

/* Six columns side by side */
.column {
    float: left;
    width: 16.66%;
}

/* Add a transparency effect for thumnbail images */
.demo {
    opacity: 0.6;
}

.active,
.demo:hover {
    opacity: 1;
}
 

JS:

     var slideIndex = 1;
    showSlides(slideIndex);

    // Next/previous controls
    function plusSlides(n) {
        showSlides(slideIndex  = n);
    }

    // Thumbnail image controls
    function currentSlide(n) {
        showSlides(slideIndex = n);
    }

    function showSlides(n) {
        var i;
        var slides = document.getElementsByClassName("mySlides");
        var dots = document.getElementsByClassName("demo");
        var captionText = document.getElementById("caption");
        if (n > slides.length) {slideIndex = 1}
        if (n < 1) {slideIndex = slides.length}
        for (i = 0; i < slides.length; i  ) {
            slides[i].style.display = "none";
        }
        for (i = 0; i < dots.length; i  ) {
            dots[i].className = dots[i].className.replace(" active", "");
        }
        slides[slideIndex-1].style.display = "block";
        dots[slideIndex-1].className  = " active";
        captionText.innerHTML = dots[slideIndex-1].a<
    }
    function showSlides(n) {
        var i;
        var slides = document.getElementsByClassName("mySlides");
        var dots = document.getElementsByClassName("demo");
        var captionText = document.getElementById("caption");
        if (n > slides.length) {slideIndex = 1}
        if (n < 1) {slideIndex = slides.length}
        for (i = 0; i < slides.length; i  ) {
            slides[i].style.display = "none";
        }
        for (i = 0; i < dots.length; i  ) {
            dots[i].className = dots[i].className.replace(" active", "");
        }
        slides[slideIndex-1].style.display = "block";
        dots[slideIndex-1].className  = " active";
        captionText.innerHTML = dots[slideIndex-1].a<
    }
 

HTML:

             <h3>Minigame Mania:</h3>
            <div class = "container2" >
                <div class ="mySlides">
                    <div class ="numberText">1/3</div>
                    <img src="assets/img/SameLevelPrototypeGameplay1.png" style="width: 100%">
                </div>
                <div class ="mySlides">
                    <div class ="numberText">2/3</div>
                    <img src="assets/img/SameLevelPrototypeGameplay2.png" style="width: 100%">
                </div>
                <div class ="mySlides">
                    <div class ="numberText">3/3</div>
                    <img src="assets/img/SameLevelPrototypeGameplay3.png" style="width: 100%">
                </div>
                <a class="prev" onclick="plusSlides(-1)">amp;#10094;</a>
                <a class="next" onclick="plusSlides(1)">amp;#10095;</a>
                <div class ="caption-container">
                    <p id="caption"></p>
                </div>
                <div class="row">
                    <div class ="column">
                        <img class ="demo cursor" src="assets/img/SameLevelPrototypeGameplay1.png" style="width:100%" onclick="currentSlide(1)" alt="Gameplay">
                    </div>
                    <div class ="column">
                        <img class ="demo cursor" src="assets/img/SameLevelPrototypeGameplay2.png" style="width:100%" onclick="currentSlide(2)" alt="Gameplay">
                    </div>
                    <div class ="column">
                        <img class ="demo cursor" src="assets/img/SameLevelPrototypeGameplay3.png" style="width:100%" onclick="currentSlide(3)" alt="Gameplay">
                    </div>
                </div>
            </div>
            <!-- Same Level Prototype info, description etc -->
            <h3>Same Level Prototype:</h3>
            <div class = "container2">
                <div class ="mySlides">
                    <div class ="numberText">1/3</div>
                        <img src="assets/img/SameLevelPrototypeGameplay1.png" style="width: 100%">
                </div>
                <div class ="mySlides">
                    <div class ="numberText">2/3</div>
                    <img src="assets/img/SameLevelPrototypeGameplay2.png" style="width: 100%">
                </div>
                <div class ="mySlides">
                    <div class ="numberText">3/3</div>
                    <img src="assets/img/SameLevelPrototypeGameplay3.png" style="width: 100%">
                </div>
                <a class="prev" onclick="plusSlides(-1)">amp;#10094;</a>
                <a class="next" onclick="plusSlides(1)">amp;#10095;</a>
                <div class ="caption-container">
                    <p id="caption"></p>
                </div>
                <div class="row">
                    <div class ="column">
                        <img class ="demo cursor" src="assets/img/SameLevelPrototypeGameplay1.png" style="width:100%" onclick="currentSlide(1)" alt="Gameplay">
                    </div>
                    <div class ="column">
                        <img class ="demo cursor" src="assets/img/SameLevelPrototypeGameplay2.png" style="width:100%" onclick="currentSlide(2)" alt="Gameplay">
                    </div>
                    <div class ="column">
                        <img class ="demo cursor" src="assets/img/SameLevelPrototypeGameplay3.png" style="width:100%" onclick="currentSlide(3)" alt="Gameplay">
                    </div>
                </div>
 

Я пробовал несколько методов, таких как добавление идентификаторов галереи, но они не увенчались успехом. Я довольно новичок в html, css и js, поэтому я озадачен проблемой, которая, вероятно, некоторым из вас кажется простой. Любая помощь приветствуется, заранее спасибо!

Комментарии:

1. Я предлагаю использовать что-то другое, чем «старый код w3schools». Найдите более современный скрипт, который делает то, что вы хотите. Существуют тысячи сценариев слайд-шоу (которые также называются «карусель» или «слайдер»)…

2. Я бы рекомендовал проверить карусель Bootstrap . Страница, на которую я ссылался, показывает, как работает HTML, и требует очень мало JS.