How To Display Two Slideshows On The Same Page?
I'm using this slideshow as an example, which works perfectly fine. There are shared classes between each slideshow which means that when one finishes only then can the next one be
Solution 1:
I dont know if I should do this... But here goes Object Oriented Style of doing things...
- Create single Class for ALL SLIDES
- Create instances of each slide
- Call functions for the instance you want.. The thing I edited in your html was the onclick calls for the Instances(or objects) and I wrapped both slides and dots in a single section div..
Now you have two sections of slides( slide + dots ) working independently..
let slide1 = new CreateSlide(0);
let slide2 = new CreateSlide(1);
function CreateSlide(index) {
this.slideContainer = document.getElementsByClassName("section")[index];
this.slideIndex = 1;
this.plusSlides = function(n) {
this.showSlides(this.slideIndex += n);
};
this.currentSlide = function(n) {
this.showSlides(this.slideIndex = n);
};
this.showSlides = function(n) {
var i;
var slides = this.slideContainer.getElementsByClassName("mySlides");
var dots = this.slideContainer.getElementsByClassName("dot");
if (n > slides.length) {
this.slideIndex = 1
}
if (n < 1) {
this.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[this.slideIndex - 1].style.display = "block";
dots[this.slideIndex - 1].className += " active";
}
this.showSlides(1);
}
* {
box-sizing: border-box
}
body {
font-family: Verdana, sans-serif;
margin: 0
}
/* Slideshow container */
.slideshow-container {
position: relative;
background: #f1f1f1f1;
}
/* Slides */
.mySlides {
display: none;
padding: 80px;
text-align: center;
}
/* Next & previous buttons */
.prev, .next {
cursor: pointer;
position: absolute;
top: 50%;
width: auto;
margin-top: -30px;
padding: 16px;
color: #888;
font-weight: bold;
font-size: 20px;
border-radius: 0 3px 3px 0;
user-select: none;
}
/* Position the "next button" to the right */
.next {
position: absolute;
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);
color: white;
}
/* The dot/bullet/indicator container */
.dot-container {
text-align: center;
padding: 20px;
background: #ddd;
}
/* The dots/bullets/indicators */
.dot {
cursor: pointer;
height: 15px;
width: 15px;
margin: 0 2px;
background-color: #bbb;
border-radius: 50%;
display: inline-block;
transition: background-color 0.6s ease;
}
/* Add a background color to the active dot/circle */
.active, .dot:hover {
background-color: #717171;
}
/* Add an italic font style to all quotes */
q {
font-style: italic;
}
/* Add a blue color to the author */
.author {
color: cornflowerblue;
}
<h1>Slideshow 1</h1>
<div class="section">
<div class="slideshow-container">
<div class="mySlides">
<q>I love you the more in that I believe you had liked me for my own sake and for nothing else</q>
<p class="author">- John Keats</p>
</div>
<div class="mySlides">
<q>But man is not made for defeat. A man can be destroyed but not defeated.</q>
<p class="author">- Ernest Hemingway</p>
</div>
<div class="mySlides">
<q>I have not failed. I've just found 10,000 ways that won't work.</q>
<p class="author">- Thomas A. Edison</p>
</div>
<a class="prev" onclick="slide1.plusSlides(-1)">❮</a>
<a class="next" onclick="slide1.plusSlides(1)">❯</a>
</div>
<div class="dot-container">
<span class="dot" onclick="slide1.currentSlide(1)"></span>
<span class="dot" onclick="slide1.currentSlide(2)"></span>
<span class="dot" onclick="slide1.currentSlide(3)"></span>
</div>
</div>
<div class="section">
<h1>Slideshow 2</h1>
<div class="slideshow-container">
<div class="mySlides">
<q>I love you the more in that I believe you had liked me for my own sake and for nothing else</q>
<p class="author">- John Keats</p>
</div>
<div class="mySlides">
<q>But man is not made for defeat. A man can be destroyed but not defeated.</q>
<p class="author">- Ernest Hemingway</p>
</div>
<div class="mySlides">
<q>I have not failed. I've just found 10,000 ways that won't work.</q>
<p class="author">- Thomas A. Edison</p>
</div>
<a class="prev" onclick="slide2.plusSlides(-1)">❮</a>
<a class="next" onclick="slide2.plusSlides(1)">❯</a>
</div>
<div class="dot-container">
<span class="dot" onclick="slide2.currentSlide(1)"></span>
<span class="dot" onclick="slide2.currentSlide(2)"></span>
<span class="dot" onclick="slide2.currentSlide(3)"></span>
</div>
</div>
Post a Comment for "How To Display Two Slideshows On The Same Page?"