I'm trying to create a slideshow gallery much like the one described on w3schools.com, but with more than 6 pictures.
Just adding more instances of the code that generates each image and each thumbnail works fine:
<!DOCTYPE html><html><metaname="viewport"content="width=device-width, initial-scale=1"><style>
body {font-family: Arial;margin:0;}*{box-sizing: border-box;}
img {vertical-align: middle;}/* Position the image container (needed to position the left and right arrows) */.container {position: relative;}/* Hide the images by default */.mySlides {display: none;}/* Add a pointer when hovering over the thumbnail images */.cursor {cursor: pointer;}/* Next & 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:03px3px0;user-select: none;-webkit-user-select: none;}/* Position the "next button" to the right */.next {right:0;border-radius:3px003px;}/* 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:8px12px;position: absolute;top:0;}/* Container for image text */.caption-container {text-align: center;background-color:#222;padding:2px16px;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;}</style><body><h2style="text-align:center">Slideshow Gallery</h2><divclass="container"><divclass="mySlides"><divclass="numbertext">1 / 7</div><imgsrc="img_woods_wide.jpg"style="width:100%"></div><divclass="mySlides"><divclass="numbertext">2 / 7</div><imgsrc="img_5terre_wide.jpg"style="width:100%"></div><divclass="mySlides"><divclass="numbertext">3 / 7</div><imgsrc="img_mountains_wide.jpg"style="width:100%"></div><divclass="mySlides"><divclass="numbertext">4 / 7</div><imgsrc="img_lights_wide.jpg"style="width:100%"></div><divclass="mySlides"><divclass="numbertext">5 / 7</div><imgsrc="img_nature_wide.jpg"style="width:100%"></div><divclass="mySlides"><divclass="numbertext">6 / 7</div><imgsrc="img_snow_wide.jpg"style="width:100%"></div><divclass="mySlides"><divclass="numbertext">7 / 7</div><imgsrc="img_nature_wide.jpg"style="width:100%"></div><aclass="prev"onclick="plusSlides(-1)">ā®</a><aclass="next"onclick="plusSlides(1)">āÆ</a><divclass="caption-container"><pid="caption"></p></div><divclass="row"><divclass="column"><imgclass="demo cursor"src="img_woods.jpg"style="width:100%"onclick="currentSlide(1)"alt="The Woods"></div><divclass="column"><imgclass="demo cursor"src="img_5terre.jpg"style="width:100%"onclick="currentSlide(2)"alt="Cinque Terre"></div><divclass="column"><imgclass="demo cursor"src="img_mountains.jpg"style="width:100%"onclick="currentSlide(3)"alt="Mountains and fjords"></div><divclass="column"><imgclass="demo cursor"src="img_lights.jpg"style="width:100%"onclick="currentSlide(4)"alt="Northern Lights"></div><divclass="column"><imgclass="demo cursor"src="img_nature.jpg"style="width:100%"onclick="currentSlide(5)"alt="Nature and sunrise"></div><divclass="column"><imgclass="demo cursor"src="img_snow.jpg"style="width:100%"onclick="currentSlide(6)"alt="Snowy Mountains"></div><divclass="column"><imgclass="demo cursor"src="img_nature.jpg"style="width:100%"onclick="currentSlide(7)"alt="Nature and sunrise"></div></div></div><script>let slideIndex =1;
showSlides(slideIndex);function plusSlides(n){
showSlides(slideIndex += n);}function currentSlide(n){
showSlides(slideIndex = n);}function showSlides(n){let i;let slides = document.getElementsByClassName("mySlides");let dots = document.getElementsByClassName("demo");let 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].alt;}</script></body></html>
Ā
Ā ... except the thumbnails start stacking on top of each other because the columns that are holding them are defined as 16.66% width:
.column {
float: left;
width: 16.66%;
}
Ā
Of course, I could adjust the percentage to something smaller, but that only really works if the number of images you're adding is fairly limited.
How could I make the row of thumbnails only show the first 6 thumbnails initially, and then slide over to show thumbnails 2-7 when reaching slide 7, then show 3-8 when reaching slide 8, etc... ?
SomethingĀ like thisĀ would be ideal, but for some reason I can't make the coding in the example work - I suspect because while I get the basics of JavaScript, I'm probably still not proficient enough to put everything in the tutorial together correctly.
Ā
I'm kinda surprised this wasn't adressed in the tutorial on w3schools in the first place, but maybe there was a reason for that?
Anyway, any help would be greatly appreciatedĀ š
How to create a slideshow gallery with more than 6 pictures
in JavaScript
Posted
(First time posting, please be gentleĀ š)
I'm trying to create a slideshow gallery much like the one described on w3schools.com, but with more than 6 pictures.
Just adding more instances of the code that generates each image and each thumbnail works fine:
Ā
Ā ... except the thumbnails start stacking on top of each other because the columns that are holding them are defined as 16.66% width:
.column { float: left; width: 16.66%; }
Ā
Of course, I could adjust the percentage to something smaller, but that only really works if the number of images you're adding is fairly limited.
How could I make the row of thumbnails only show the first 6 thumbnails initially, and then slide over to show thumbnails 2-7 when reaching slide 7, then show 3-8 when reaching slide 8, etc... ?
SomethingĀ like thisĀ would be ideal, but for some reason I can't make the coding in the example work - I suspect because while I get the basics of JavaScript, I'm probably still not proficient enough to put everything in the tutorial together correctly.
Ā
I'm kinda surprised this wasn't adressed in the tutorial on w3schools in the first place, but maybe there was a reason for that?
Anyway, any help would be greatly appreciatedĀ š