Minimal Responsive Card Slider In jQuery
| File Size: | 87 KB |
|---|---|
| Views Total: | 5586 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A flexible, horizontal, fully responsive card slider built with jQuery and CSS flexible box.
Click/tap the prev/next buttons to scroll through the card content. Supports multiple instances on the same page.
How to use it:
1. Create the content containers and navigation controls for the card slider.
<div class="card-slider" id="slider-example">
<header>
<h3>Minimal Card slider</h3>
<div class="slider-nav">
<button data-direction="prev" class="disabled">Prev</button>
<button data-direction="next">Next</button>
</div>
</header>
<div class="inner">
<ul>
<li>
<figure>
<img src="1.jpg">
</figure>
<div>
<h4>Card 1</h4>
<p>Card Content 1</p>
</div>
</li>
<li>
<figure>
<img src="2.jpg">
</figure>
<div>
<h4>Card 2</h4>
<p>Card Content 2</p>
</div>
</li>
<li>
<figure>
<img src="3.jpg">
</figure>
<div>
<h4>Card 3</h4>
<p>Card Content 3</p>
</div>
</li>
More cards here ...
</ul>
</div>
</div>
2. The necessary CSS/CSS3 for the card slider.
figure {
margin: 0;
padding: 0;
}
img {
display: inline-block;
width: auto;
max-width: 100%;
height: auto;
}
.card-slider {
width: 90%;
margin: 3em auto 0;
overflow: hidden;
display: flex;
flex-direction: row;
justify-content: space-between;
}
.card-slider header {
flex: 1 1 25%;
padding: 0 1.5em 0 0;
}
.card-slider .inner {
overflow: hidden;
flex-wrap: wrap;
flex: 1 1 75%;
}
.card-slider ul {
margin: 0;
padding: 0;
width: 100%;
display: flex;
flex-wrap: wrap;
position: relative;
transition: left 200ms ease;
left: 0;
}
.card-slider ul li {
list-style: none;
position: relative;
flex: 1 0 250px;
vertical-align: top;
box-sizing: border-box;
white-space: normal;
padding: 0 1.5em 0 0;
}
3. Style the prev/next button.
.card-slider .slider-nav {
width: 100%;
overflow: hidden;
}
.card-slider .slider-nav .disabled {
opacity: 0.4;
}
.card-slider .slide-next {
float: right;
}
4. Include the needed jQuery JavaScript library at the end of the document.
<script src="/path/to/jquery.slim.min.js"></script>
5. The jQuery script to enable the card slider.
$(".card-slider").each(function(){
var $slider = $(this),
$sliderContainer = $slider.find(".inner"),
$sliderList = $slider.find(".inner > ul"),
$sliderItem = $slider.find(".inner > ul > li"),
$sliderButton = $slider.find(".slider-nav button"),
$slidePrev = $slider.find('[data-direction="prev"]'),
$slideNext = $slider.find('[data-direction="next"]'),
setItemWidth = function(){
$sliderList.removeAttr("style");
var curWidth = $($sliderItem[0]).outerWidth() * $sliderItem.length;
$sliderList.css("width", curWidth);
},
slide = function(){
var $button = $(this),
dir = $button.data("direction"),
curPos = parseInt($sliderList.css("left")) || 0,
moveto = 0,
containerWidth = $sliderContainer.outerWidth(),
listWidth = $sliderList.outerWidth(),
before = (curPos + containerWidth),
after = listWidth + (curPos - containerWidth);
if(dir=="next"){
if(after < containerWidth) {
moveto = curPos - after;
$slideNext.addClass('disabled');
$slidePrev.removeClass('disabled');
}
else {
moveto = curPos - containerWidth;
$slidePrev.removeClass('disabled');
}
}
else {
if(before >= 0) {
moveto = 0;
$slidePrev.addClass('disabled');
$slideNext.removeClass('disabled');
}
else {
moveto = curPos + containerWidth;
$slideNext.removeClass('disabled');
}
}
$sliderList.css('left', moveto);
};
$(window).resize(function(){
setItemWidth();
});
setItemWidth();
$sliderButton.on("click", slide);
});
This awesome jQuery plugin is developed by ppnelles. For more Advanced Usages, please check the demo page or visit the official website.











