Pure CSS Slideshow w/ Captions

Comes in handy for non-javascript environments. Not a great solution for a slideshow as it's based on static keyframe animation, one keyframe set for each slide. Not easily extensible.

by Pete Fecteau

HTML

<div class="container">
	<div id="content-slider">
    	<div id="slider">
        	<div id="mask">
                <ul>
                    <li id="first" class="firstanimation" style="background-image:url('http://buttonpresser.com/images/puppy1.jpg');">
                        <div class="caption">Dalmatian puppy about to take a nap</div>
                    </li>
        
                    <li id="second" class="secondanimation" style="background-image:url('http://buttonpresser.com/images/puppy2.jpg');">
                        <div class="caption">Five fiesty dalmatian pups</div>
                    </li>
                    
                    <li id="third" class="thirdanimation" style="background-image:url('http://buttonpresser.com/images/puppy3.jpg');">
                        <div class="caption">Unbearably cute glance</div>
                    </li>
                                
                    <li id="fourth" class="fourthanimation" style="background-image:url('http://buttonpresser.com/images/puppy4.jpg');">
                        <div class="caption">Teenage troublemaker</div>
                    </li>
                </ul>
            </div>
            <div class="progress-bar"></div>
        </div>
    </div>
</div>

CSS

/* RESET */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
    font-family:'Helvetica', Arial, san-serif;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}

/* ANIMATION */
@-webkit-keyframes cycle {
	0%  { top:0px; }
	4%  { top:0px; }
	16% { top:0px; opacity:1; z-index:0; } 
	20% { top:325px; opacity:0; z-index:0; }
	21% { top:-325px; opacity:0; z-index:-1; }
	50% { top:-325px; opacity:0; z-index:-1; }
	92% { top:-325px; opacity:0; z-index:0; }
	96% { top:-325px; opacity:0; }
	100%{ top:0px; opacity:1; }
}
@-webkit-keyframes cycletwo {
	0%  { top:-325px; opacity:0; }
	16% { top:-325px; opacity:0; }
	20% { top:0px; opacity:1; }
	24% { top:0px; opacity:1; } 
	36% { top:0px; opacity:1; z-index:0; } 
	40% { top:325px; opacity:0; z-index:0; }
	41% { top:-325px; opacity:0; z-index:-1; }  
	100%{ top:-325px; opacity:0; z-index:-1; }
}
@-webkit-keyframes cyclethree {
	0%  { top:-325px; opacity:0; }
	36% { top:-325px; opacity:0; }
	40% { top:0px; opacity:1; }
	44% { top:0px; opacity:1; } 
	56% { top:0px; opacity:1; z-index:0; } 
	60% { top:325px; opacity:0; z-index:0; } 
	61% { top:-325px;...