Reputation: 53
Here is a (somewhat) working version of the page I am working on: https://www.the-car-club.com/walsergold/home.asp . The content displays properly, but only content on the last slide is clickable. Any suggestions on how to make content on the first couple slides interactive?
HTML
<div class="square-slider">
<div class="slide slide1">
<div class="content light">
<h3>Recreating The Square Slider</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac eros et augue vulputate
aliquet pellentesque vitae tortor. Pellentesque mi velit, euismod nec semper</p>
</div>
<img src="images/asset1.png" alt="" class="asset" />
</div>
<div class="slide slide2">
<div class="content dark">
<h3>Looks Amazing Right?</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac eros et augue vulputate
aliquet pellentesque vitae tortor. Pellentesque mi velit, euismod nec semper</p>
</div>
<img src="images/asset2.png" alt="" class="asset" />
</div>
<div class="slide slide3 inverted">
<div class="content light">
<h3>And Simple To Use</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac eros et augue vulputate
aliquet pellentesque vitae tortor. Pellentesque mi velit, euismod nec semper</p>
</div>
<img src="images/asset3.png" alt="" class="asset" />
</div>
<a href="#" class="prev">Prev</a>
<a href="#" class="next">Next</a>
<div class="overlay"></div>
JavaScript (jQuery)
(function($){
$('.square-slider').each(function(){
var slider = $(this),
slides = slider.find('.slide'),
currentSlide = 0;
slides.show();
$(slides[currentSlide]).addClass('active');
$('.next,.prev', slider).show();
$('.prev', slider).on('click', function(){
slides.removeClass('active');
currentSlide--;
if(currentSlide < 0) currentSlide = slides.length - 1;
$(slides[currentSlide]).addClass('active');
return false;
});
$('.next', slider).on('click', function(){
slides.removeClass('active');
currentSlide++;
if(currentSlide > slides.length - 1) currentSlide = 0;
$(slides[currentSlide]).addClass('active');
return false;
});
});
})(window.jQuery);
Upvotes: 0
Views: 387
Reputation: 61083
To maintain accessibility, try this instead of {display: none}.
.slide {left: -999em;}
.slide.active {left: 0;}
You'll need to incorporate those styles into your jQuery, however, to prevent sudden transitions.
Upvotes: 0
Reputation: 1614
You need to display:None/Block the slides. In your current code, you're just changing the opacity from 1 to 0 with class 'active'. So the element is still there, and the last element (slide3) will be the only thing that's clickable. Remove all references to .show(), edit your css and add display:block to 'active'.
Upvotes: 2