Forked from Captain Anonymous's Pen gpOONw.
Forked from Captain Anonymous's Pen gpOONw.
Forked from Captain Anonymous's Pen gpOONw.
A Pen by davidvenin on CodePen.
<div class="slider-container"> | |
<div id="prev" class="navigation navigation-prev">Prev</div> | |
<div id="next" class="navigation navigation-next">Next</div> | |
<div class="slider"> | |
<ul class="slider-content"> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/nightlife-h-c-408-423-10.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/city-h-c-408-423-3.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/technics-h-c-408-423-6.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/people-h-c-408-423-9.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/fashion-h-c-408-423-3.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/fashion-h-c-408-423-3.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/fashion-h-c-408-423-3.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/fashion-h-c-408-423-3.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/fashion-h-c-408-423-3.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/fashion-h-c-408-423-3.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
<li class="slider-item"> | |
<div class="slider-img"> | |
<img src="http://lorempixel.com/output/fashion-h-c-408-423-3.jpg" alt="" /> | |
</div> | |
<div class="slider-description"> | |
<h6 class="slider-year">Décembre<br>2013</h6> | |
<p class="slider-text"> | |
En maitrisant nous-mêmes la création des produits de A à Z, en supprimant les ers pouvons vous proposer des produits sains plus riches en nutrition, meilleurs en goût et mieux packagés directement chez vous, sans augmenter les prix. | |
</p> | |
</div> | |
</li> | |
</ul> | |
</div> | |
</div> | |
<div class="navigation-container"> | |
<ul class="navigation-slider clearfix"> | |
<li class="slide-nav nav-1"> | |
<span class="month">Sept.<br>2013</span> | |
<a class="link active" href="#" data-href="0">step 1</a> | |
</li> | |
<li class="slide-nav nav-2"> | |
<span class="month">Dec.<br>2013</span> | |
<a class="link" href="#" data-href="1">step 2</a> | |
</li> | |
<li class="slide-nav nav-3"> | |
<span class="month">Févr.<br>2014</span> | |
<a class="link" href="#" data-href="2">step 3</a> | |
</li> | |
<li class="slide-nav nav-4"> | |
<span class="month">Mars.<br>2014</span> | |
<a class="link" href="#" data-href="3">step 4</a> | |
</li> | |
<li class="slide-nav nav-5"> | |
<span class="month">Juin.<br>2014</span> | |
<a class="link" href="#" data-href="4">step 5</a> | |
</li> | |
<li class="slide-nav nav-6"> | |
<span class="month">Sept<br>2014</span> | |
<a class="link" href="#" data-href="5">step 3</a> | |
</li> | |
<li class="slide-nav nav-7"> | |
<span class="month">Oct.<br>2014</span> | |
<a class="link" href="#" data-href="6">step 4</a> | |
</li> | |
<li class="slide-nav nav-8"> | |
<span class="month">Nov.<br>2014</span> | |
<a class="link" href="#" data-href="7">step 5</a> | |
</li> | |
<li class="slide-nav nav-9"> | |
<span class="month">Dec.<br>2014</span> | |
<a class="link" href="#" data-href="8">step 3</a> | |
</li> | |
<li class="slide-nav nav-10"> | |
<span class="month">Janv<br>2015</span> | |
<a class="link" href="#" data-href="9">step 4</a> | |
</li> | |
<li class="slide-nav nav-11"> | |
<span class="month">Mars.<br>2014</span> | |
<a class="link" href="#" data-href="10">step 5</a> | |
</li> | |
</ul> | |
</div> |
Forked from Captain Anonymous's Pen gpOONw.
Forked from Captain Anonymous's Pen gpOONw.
Forked from Captain Anonymous's Pen gpOONw.
A Pen by davidvenin on CodePen.
$(function() { | |
$('.slider').each(function() { | |
sliders.push(new Slider(this)); | |
}); | |
Slider.prototype.clickEl(); | |
Slider.prototype.navigate(); | |
}); | |
var utils = utils || (function() { | |
'use strict'; | |
return { | |
hasClass: function(el, cl) { | |
var regex = new RegExp('(?:\\s|^)' + cl + '(?:\\s|$)'); | |
return !!el.className.match(regex); | |
}, | |
addClass: function(el, cl) { | |
el.className += ' ' + cl; | |
}, | |
removeClass: function(el, cl) { | |
var regex = new RegExp('(?:\\s|^)' + cl + '(?:\\s|$)'); | |
el.className = el.className.replace(regex, ' '); | |
}, | |
toggleClass: function(el, cl) { | |
var testClass = this.hasClass(el, cl) ? this.removeClass(el, cl) : this.addClass(el, cl); | |
}, | |
getNextElementSibling: function(el) { | |
if (el.nextElementSibling) { | |
return el.nextElementSibling; | |
} else { | |
do { | |
el = el.nextSibling; | |
} | |
while (el && el.nodeType !== 1); | |
return el; | |
} | |
}, | |
elementInViewport: function(el) { | |
var rect = el.getBoundingClientRect(); | |
return ( | |
rect.top >= 0 && rect.left >= 0 && rect.top <= (window.innerHeight || document.documentElement.clientHeight) | |
); | |
}, | |
sameHeight: function(el) { | |
var maxHeight = 0; | |
for (var i = 0; i < el.length; i++) { | |
var thisHeight = el[i].offsetHeight; | |
if (thisHeight > maxHeight) { | |
maxHeight = thisHeight; | |
} | |
} | |
for (i = 0; i < el.length; i++) { | |
el[i].style.height = maxHeight + 'px'; | |
} | |
} | |
}; | |
})(); | |
var sliders = []; | |
var Slider = function() { | |
this.initialize.apply(this, arguments) | |
}; | |
Slider.prototype = { | |
initialize: function(slider) { | |
this.sliderContainer = slider.children[0]; | |
this.sliderItem = this.sliderContainer.children; | |
this.sliderContainer.style.width = (this.sliderItem[0].clientWidth * this.sliderItem.length) + 'px'; | |
this.currentIndex = 0; | |
}, | |
goTo: function(index) { | |
var sliderContent = document.getElementsByClassName('slider-content'); | |
var sliderItem = document.getElementsByClassName('slider-item'); | |
if (index < 0 || index > sliderItem.length - 1) | |
return | |
for (var i = 0; i < sliderContent.length; i++) { | |
sliderContent[i].style.left = '-' + (100 * index) + '%'; | |
this.currentIndex = index; | |
} | |
console.log('Index methode goTo: '+index); | |
}, | |
goToPrev: function() { | |
this.goTo(this.currentIndex - 1); | |
}, | |
goToNext: function() { | |
this.goTo(this.currentIndex + 1); | |
}, | |
clickEl: function() { | |
var link = document.getElementsByClassName('link'); | |
var self = this; | |
var step; | |
for (var i = 0; i < link.length; i++) { | |
link[i].addEventListener('click', function(e) { | |
e.preventDefault(); | |
step = this.getAttribute('data-href'); | |
for (x = 0; x < link.length; x++) { | |
if (utils.hasClass(link[x], 'active')) { | |
utils.removeClass(link[x], 'active'); | |
utils.addClass(this, 'active'); | |
} | |
} | |
console.log('click on circles') | |
self.goTo(step); | |
}); | |
}; | |
}, | |
navigate: function(){ | |
var navigation = document.getElementsByClassName('navigation'); | |
var prev = document.getElementById('prev'); | |
var next = document.getElementById('next'); | |
var self = this; | |
prev.addEventListener('click', function(e){ | |
console.log('prev'); | |
self.goToPrev(); | |
}); | |
next.addEventListener('click', function(e){ | |
console.log('next'); | |
self.goTo(self.currentIndex + 1); | |
}); | |
} | |
} | |
/*for(var y = 0; y < navigation.length; y++){ | |
navigation[y].addEventListener('click', function(e){ | |
if(utils.hasClass(this, 'navigation-prev')){ | |
console.log('prev btn') | |
self.goToPrev(); | |
} else { | |
console.log('next btn') | |
self.goToNext(); | |
} | |
}); | |
}*/ |
thanks to @arnaudhuc & @ronanlevesque to make it works properly !
A Pen by davidvenin on CodePen.
.slider-container { | |
position: relative; | |
width: 800px; | |
margin: 0 auto; | |
} | |
.slider { | |
width: 760px; | |
overflow: hidden; | |
margin: 0 auto; | |
position: relative; | |
} | |
.slider .slider-content { | |
position: relative; | |
list-style: none; | |
height: 490px; | |
margin: 0; | |
padding: 0; | |
-webkit-box-sizing: border-box; | |
-moz-box-sizing: border-box; | |
-ms-box-sizing: border-box; | |
-o-box-sizing: border-box; | |
-webkit-transition: 0.5s left; | |
-moz-transition: 0.5s left; | |
-ms-transition: 0.5s left; | |
-o-transition: 0.5s left; | |
} | |
.slider .slider-content > .slider-item { | |
padding: 40px; | |
margin: 0; | |
float: left; | |
width: 760px; | |
height: 490px; | |
background: #FBFAF5; | |
-webkit-box-sizing: border-box; | |
-moz-box-sizing: border-box; | |
-ms-box-sizing: border-box; | |
-o-box-sizing: border-box; | |
} | |
.slider .slider-img, | |
.slider .slider-description { | |
float: left; | |
height: 423px; | |
} | |
.slider .slider-img { | |
width: 401px; | |
margin-right: 30px; | |
} | |
.slider .slider-description { | |
width: 249px; | |
padding: 25px; | |
border: 2px solid #ff6666; | |
-webkit-box-sizing: border-box; | |
-moz-box-sizing: border-box; | |
-ms-box-sizing: border-box; | |
-o-box-sizing: border-box; | |
} | |
.slider-year { | |
font-size: 30px !important; | |
font-family: 'Oswald-Regular', Helvetica, arial, sans-serif; | |
line-height: 36px; | |
padding-bottom: 15px; | |
margin-bottom: 15px; | |
border-bottom: 1px solid #ff6666; | |
} | |
.navigation { | |
cursor: pointer; | |
color: #E6CA8C; | |
text-transform:uppercase; | |
font-family: helvetica; | |
font-weight: bold; | |
position: absolute; | |
top:50%; | |
} | |
.navigation-prev { | |
left:-50px; | |
} | |
.navigation-next { | |
right:-50px; | |
} | |
.navigation-container { | |
width: 90%; | |
margin: 80px auto; | |
position: relative; | |
} | |
.navigation-slider::after, | |
.navigation-slider::before { | |
position: absolute; | |
display: block; | |
top: -6px; | |
content: ''; | |
width: 15px; | |
height: 15px; | |
background: #E6CA8C; | |
border-radius: 50%; | |
} | |
.navigation-slider::before { | |
left: 0; | |
} | |
.navigation-slider::after { | |
right: 0; | |
} | |
.navigation-container .navigation-slider { | |
width: 100%; | |
height: 4px; | |
background: #E6CA8C; | |
position: relative; | |
} | |
.navigation-slider .slide-nav { | |
list-style: none; | |
position: absolute; | |
top: -58px; | |
} | |
.navigation-slider .slide-nav .month { | |
display: block; | |
padding-bottom: 10px; | |
font-family: 'Oswald-Light', arial, helvetica, sans-serif; | |
text-align: center; | |
color: #ff6666; | |
font-size: 16px; | |
line-height: 20px; | |
} | |
.navigation-slider .slide-nav a { | |
display: block; | |
text-indent: -9999px; | |
width: 14px; | |
height: 14px; | |
background: #FF6666; | |
border-radius: 50%; | |
border: 2px solid #FF6666; | |
margin: 0 auto; | |
} | |
.navigation-slider .slide-nav a.active, | |
.navigation-slider .slide-nav a:hover { | |
background: white; | |
} | |
.nav-1 { | |
left: 5%; | |
} | |
.nav-2 { | |
left: 10%; | |
} | |
.nav-3 { | |
left: 18%; | |
} | |
.nav-4 { | |
left: 24%; | |
} | |
.nav-5 { | |
left: 32%; | |
} | |
.nav-6 { | |
left: 39%; | |
} | |
.nav-7 { | |
left: 45%; | |
} | |
.nav-8 { | |
left: 51%; | |
} | |
.nav-9 { | |
left: 57%; | |
} | |
.nav-10 { | |
left: 64%; | |
} | |
.nav-11 { | |
left: 70%; | |
} | |
.nav-12 { | |
left: 80%; | |
} |