Created
May 24, 2013 09:41
-
-
Save anonymous/5642444 to your computer and use it in GitHub Desktop.
A CodePen by Chris Coyier. Slider like Yahoo Weather App
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div class="slider-wrap"> | |
<div class="slider" id="slider"> | |
<div class="holder"> | |
<div class="slide" id="slide-0"><span class="temp">74°</span></div> | |
<div class="slide" id="slide-1"><span class="temp">64°</span></div> | |
<div class="slide" id="slide-2"><span class="temp">82°</span></div> | |
</div> | |
</div> | |
<nav class="slider-nav"> | |
<a href="#slide-0" class="active">Slide 0</a> | |
<a href="#slide-1">Slide 1</a> | |
<a href="#slide-2">Slide 2</a> | |
</nav> | |
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var slider = { | |
// Not sure if keeping element collections like this | |
// together is useful or not. | |
el: { | |
slider: $("#slider"), | |
allSlides: $(".slide"), | |
sliderNav: $(".slider-nav"), | |
allNavButtons: $(".slider-nav > a") | |
}, | |
timing: 800, | |
slideWidth: 300, // could measure this | |
// In this simple example, might just move the | |
// binding here to the init function | |
init: function() { | |
this.bindUIEvents(); | |
}, | |
bindUIEvents: function() { | |
// You can either manually scroll... | |
this.el.slider.on("scroll", function(event) { | |
slider.moveSlidePosition(event); | |
}); | |
// ... or click a thing | |
this.el.sliderNav.on("click", "a", function(event) { | |
slider.handleNavClick(event, this); | |
}); | |
// What would be cool is if it had touch | |
// events where you could swipe but it | |
// also kinda snapped into place. | |
}, | |
moveSlidePosition: function(event) { | |
// Magic Numbers =( | |
this.el.allSlides.css({ | |
"background-position": $(event.target).scrollLeft()/6-100+ "px 0" | |
}); | |
}, | |
handleNavClick: function(event, el) { | |
event.preventDefault(); | |
var position = $(el).attr("href").split("-").pop(); | |
this.el.slider.animate({ | |
scrollLeft: position * this.slideWidth | |
}, this.timing); | |
this.changeActiveNav(el); | |
}, | |
changeActiveNav: function(el) { | |
this.el.allNavButtons.removeClass("active"); | |
$(el).addClass("active"); | |
} | |
}; | |
slider.init(); | |
// http://codepen.io/BaylorRae/pen/ImGBC | |
// Originally added click links, so I ported over and re-wrote |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@import url(http://fonts.googleapis.com/css?family=Josefin+Slab:100); | |
.slider-wrap { | |
width: 300px; | |
height: 500px; | |
margin: 20px auto; | |
} | |
.slider { | |
overflow-x: scroll; | |
} | |
.holder { | |
width: 300%; | |
} | |
.slide { | |
float: left; | |
width: 300px; | |
height: 500px; | |
position: relative; | |
background-position: -100px 0; | |
} | |
.temp { | |
position: absolute; | |
color: white; | |
font-size: 100px; | |
bottom: 15px; | |
left: 15px; | |
font-family: 'Josefin Slab', serif; | |
font-weight: 100; | |
} | |
#slide-0 { | |
background-image: url(http://farm8.staticflickr.com/7347/8731666710_34d07e709e_z.jpg); | |
} | |
#slide-1 { | |
background-image: url(http://farm8.staticflickr.com/7384/8730654121_05bca33388_z.jpg); | |
} | |
#slide-2 { | |
background-image: url(http://farm8.staticflickr.com/7382/8732044638_9337082fc6_z.jpg); | |
} | |
.slide:before { | |
content: ""; | |
position: absolute; | |
bottom: 0; | |
left: 0; | |
width: 100%; | |
height: 40%; | |
background: linear-gradient(transparent, black); | |
} | |
.slider-nav { | |
text-align: center; | |
margin: 10px 0 0 0; | |
} | |
.slider-nav a { | |
width: 10px; | |
height: 10px; | |
display: inline-block; | |
background: #ddd; | |
overflow: hidden; | |
text-indent: -9999px; | |
border-radius: 50%; | |
} | |
.slider-nav a.active { | |
background: #999; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment