Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Image Slider mit Java Script
#2
Normaler Weise bin ich nicht so sehr dafür, das Rad neu zu erfinden aber in diesem Fall wäre es ein wenig Overkill, hier ein ausgewachsenes Slider-Skript einzusetzen. Und dein Skript abzuändern ist relativ einfach: Die Aktionen für einen Slider in eine Funktion packen:
Code:
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Multiple Image Slider</title>
    <style>
         div.slides {
            display: grid;
        }

        figure.slide {
            /* Wir legen alle Slides in die selbe Zelle des Grid,
            damit sie übereinander liegen */
            grid-row: 1/2;
            grid-column: 1/2;
            transition: opacity 0.5s;
        }
    </style>
</head>

<body>
    <div class="container">

        <div class="blog">

            <div class="right">
                <div class="slider">
                    <div class="slides">
                        <figure class="slide">
                            <img src="images/bild1.jpg" alt="" title="">
                        </figure>
                        <figure class="slide">
                            <img src="images/bild2.jpg" alt="" title="">
                        </figure>
                        <figure class="slide">
                            <img src="images/bild3.jpg" alt="" title="">
                        </figure>
                    </div><!-- slides Ende -->
                </div><!-- slider Ende -->
            </div> <!-- right Ende -->

            <div class="left">
                <p>Text</p>
            </div>

        </div> <!--- blog Ende --->


        <div class="blog">

            <div class="right">
                <div class="slider">
                    <div class="slides">
                        <figure class="slide">
                            <img src="images/dia0.jpg" alt="" title="">
                        </figure>
                        <figure class="slide">
                            <img src="images/dia1.jpg" alt="" title="">
                        </figure>
                        <figure class="slide">
                            <img src="images/dia2.jpg" alt="" title="">
                        </figure>
                        <figure class="slide">
                            <img src="images/dia3.jpg" alt="" title="">
                        </figure>
                    </div><!-- slides Ende -->
                </div><!-- slider Ende -->
            </div> <!-- right Ende -->

            <div class="left">
                <p>Text</p>
            </div>
        </div> <!--- blog Ende --->
    </div> <!-- container Ende -->
    <script>
        const timeout = 5000;
        // Damit die einzelnen Slideshows getrennt verarbeitet werden
        // legen wir den Code dafür in eine Funktion
        function makeSlider(slider) {
            const
                // Alle Slides bereit stellen
                imgslides = slider.querySelectorAll(".slide"),
                // HTML für die Navigation bereit stellen
                nav = `
                <div>
                    <span class="prev">Previous</span>
                    <span class="next">Next</span>
                </div`;
            // ... und in Container am Ende eintragen
            slider.insertAdjacentHTML('beforeend', nav);
            const
                // Previous- und Next-Button bereit stellen
                previous = slider.querySelector(".prev"),
                next = slider.querySelector(".next");
            let current = -1;

            let sliderTimer = setTimeout(fadeNextSlide, timeout);

            function fadeNextSlide() {
                for (let i = 0; i < imgslides.length; i++) {
                    imgslides[i].style.opacity = 0;
                }

                if (current !== imgslides.length - 1) {
                    current++;
                } else {
                    current = 0;
                }
                imgslides[current].style.opacity = 1;
                sliderTimer = setTimeout(fadeNextSlide, timeout);
            }

            next.addEventListener("click", function () {
                clearTimeout(sliderTimer);
                fadeNextSlide();
            });

            function fadePrevSlide() {
                for (let i = 0; i < imgslides.length; i++) {
                    imgslides[i].style.opacity = 0;
                }
                if (current == 0) {
                    current = imgslides.length - 1;
                } else {
                    current--;
                }
                imgslides[current].style.opacity = 1;
                sliderTimer = setTimeout(fadeNextSlide, timeout);
            }

            previous.addEventListener("click", function () {
                clearTimeout(sliderTimer);
                fadePrevSlide();
            });
        }
        // Alle Slider bereit stellen
        sliders = document.querySelectorAll(".slider");
        // ... und für jeden die Slideshow erzeugen
        sliders.forEach(slider => makeSlider(slider));
    </script>
</body>

</html>
 
Anders als bei der konventionellen Methode mit absoluter Positionierung habe ich hier die Slides mit Gridlayout übereinander gelegt. Und die Prev- und Next-Buttons fügt das Skript ein, Du brauchst diese nicht ins HTML zu schreiben.
Glaube denen, die die Wahrheit suchen, und zweifle an denen, die sie gefunden haben.
(Andrι Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)
Zitieren


Nachrichten in diesem Thema
Image Slider mit Java Script - von VRG - 03.07.2023, 14:56
RE: Image Slider mit Java Script - von Sempervivum - 13.07.2023, 05:13

Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
2 Gast/Gäste