A polymer element image slider.
Slider ported from http://csscience.com/responsiveslidercss3/
Images courtesy of my friend Eliya Selhub http://flickr.com/photos/eliya
A Pen by Rob Dodson on CodePen.
<script src="http://polymer-project.org/polymer.min.js"></script> | |
<polymer-element name="img-slider" noscript> | |
<template> | |
<style> | |
* { | |
-webkit-box-sizing: border-box; | |
-moz-box-sizing: border-box; | |
-ms-box-sizing: border-box; | |
box-sizing: border-box; | |
} | |
#slider { | |
max-width: 600px; | |
text-align: center; | |
margin: 0 auto; | |
} | |
#overflow { | |
width: 100%; | |
overflow: hidden; | |
} | |
#slides .inner { | |
width: 400%; | |
} | |
#slides .inner { | |
-webkit-transform: translateZ(0); | |
-moz-transform: translateZ(0); | |
-o-transform: translateZ(0); | |
-ms-transform: translateZ(0); | |
transform: translateZ(0); | |
-webkit-transition: all 800ms cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
-moz-transition: all 800ms cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
-o-transition: all 800ms cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
-ms-transition: all 800ms cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
transition: all 800ms cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
-webkit-transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
-moz-transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
-o-transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
-ms-transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000); | |
} | |
#slides article { | |
width: 25%; | |
float: left; | |
} | |
#slide1:checked ~ #slides .inner { | |
margin-left: 0; | |
} | |
#slide2:checked ~ #slides .inner { | |
margin-left: -100%; | |
} | |
#slide3:checked ~ #slides .inner { | |
margin-left: -200%; | |
} | |
#slide4:checked ~ #slides .inner { | |
margin-left: -300%; | |
} | |
input[type="radio"] { | |
display: none; | |
} | |
label { | |
background: #CCC; | |
display: inline-block; | |
cursor: pointer; | |
width: 10px; | |
height: 10px; | |
border-radius: 5px; | |
} | |
#slide1:checked ~ label[for="slide1"], | |
#slide2:checked ~ label[for="slide2"], | |
#slide3:checked ~ label[for="slide3"], | |
#slide4:checked ~ label[for="slide4"] { | |
background: #333; | |
} | |
</style> | |
<div id="slider"> | |
<input checked="" type="radio" name="slider" id="slide1" selected="false"> | |
<input type="radio" name="slider" id="slide2" selected="false"> | |
<input type="radio" name="slider" id="slide3" selected="false"> | |
<input type="radio" name="slider" id="slide4" selected="false"> | |
<div id="slides"> | |
<div id="overflow"> | |
<div class="inner"> | |
<article> | |
<content select="img:nth-of-type(1)"></content> | |
</article> | |
<article> | |
<content select="img:nth-of-type(2)"></content> | |
</article> | |
<article> | |
<content select="img:nth-of-type(3)"></content> | |
</article> | |
<article> | |
<content select="img:nth-of-type(4)"></content> | |
</article> | |
</div> <!-- .inner --> | |
</div> <!-- #overflow --> | |
</div> | |
<label for="slide1"></label> | |
<label for="slide2"></label> | |
<label for="slide3"></label> | |
<label for="slide4"></label> | |
</div> | |
</template> | |
</polymer-element> | |
<img-slider> | |
<img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/5689/rock.jpg"> | |
<img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/5689/grooves.jpg"> | |
<img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/5689/arch.jpg"> | |
<img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/5689/sunset.jpg"> | |
</img-slider> |
A polymer element image slider.
Slider ported from http://csscience.com/responsiveslidercss3/
Images courtesy of my friend Eliya Selhub http://flickr.com/photos/eliya
A Pen by Rob Dodson on CodePen.