以下是 CSS3百叶窗式图片动画切换特效代码 的示例演示效果:
部分效果截图:
HTML代码(index.html):
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3百叶窗式图片动画切换特效</title>
<link rel="stylesheet" type="text/css" href="css/normalize.css" />
<link rel="stylesheet" type="text/css" href="css/demo.css">
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div class="container">
<input type="radio" name="slides" id="slide1" checked>
<input type="radio" name="slides" id="slide2">
<input type="radio" name="slides" id="slide3">
<input type="radio" name="slides" id="slide4">
<input type="radio" name="slides" id="slide5">
<input type="radio" name="slides" id="slide6">
<div class="slider">
<div class="captions">
<div class="c1">duzy fiat</div>
<div class="c2">syrenka</div>
<div class="c3">wartburg</div>
<div class="c4">warszawa</div>
<div class="c5">wolga</div>
<div class="c6">polonez</div>
</div>
<div class="img img1">
<div class="frag frag1"></div>
<div class="frag frag2"></div>
<div class="frag frag3"></div>
<div class="frag frag4"></div>
<div class="frag frag5"></div>
<div class="frag frag6"></div>
</div>
<div class="img img2">
<div class="frag frag1"></div>
<div class="frag frag2"></div>
<div class="frag frag3"></div>
<div class="frag frag4"></div>
<div class="frag frag5"></div>
<div class="frag frag6"></div>
</div>
<div class="img img3">
<div class="frag frag1"></div>
<div class="frag frag2"></div>
<div class="frag frag3"></div>
<div class="frag frag4"></div>
<div class="frag frag5"></div>
<div class="frag frag6"></div>
</div>
<div class="img img4">
<div class="frag frag1"></div>
<div class="frag frag2"></div>
<div class="frag frag3"></div>
<div class="frag frag4"></div>
<div class="frag frag5"></div>
<div class="frag frag6"></div>
</div>
<div class="img img5">
<div class="frag frag1"></div>
<div class="frag frag2"></div>
<div class="frag frag3"></div>
<div class="frag frag4"></div>
<div class="frag frag5"></div>
<div class="frag frag6"></div>
</div>
<div class="img img6">
<div class="frag frag1"></div>
<div class="frag frag2"></div>
<div class="frag frag3"></div>
<div class="frag frag4"></div>
<div class="frag frag5"></div>
<div class="frag frag6"></div>
</div>
</div> <!-- koniec slidera -->
<div class="side-controls">
<label for="slide1"></label>
<label for="slide2"></label>
<label for="slide3"></label>
<label for="slide4"></label>
<label for="slide5"></label>
<label for="slide6"></label>
</div>
<div class="controls">
<label for="slide1"></label>
<label for="slide2"></label>
<label for="slide3"></label>
<label for="slide4"></label>
<label for="slide5"></label>
<label for="slide6"></label>
</div>
</div>
<script src="js/prefixfree.min.js"></script>
</body>
</html>
JS代码(prefixfree.min.js):
/** * StyleFix 1.0.3 & PrefixFree 1.0.7 * @author Lea Verou * MIT license */
(function(){
function t(e,t){
return[].slice.call((t||document).querySelectorAll(e))}
if(!window.addEventListener)return;
var e=window.StyleFix={
link:function(t){
try{
if(t.rel!=="stylesheet"||t.hasAttribute("data-noprefix"))return}
catch(n){
return}
var r=t.href||t.getAttribute("data-href"),i=r.replace(/[^\/]+$/,""),s=t.parentNode,o=new XMLHttpRequest,u;
o.onreadystatechange=function(){
o.readyState===4&&u()}
;
u=function(){
var n=o.responseText;
if(n&&t.parentNode&&(!o.status||o.status<400||o.status>600)){
n=e.fix(n,!0,t);
if(i){
n=n.replace(/url\(\s*?((?:"|')?)(.+?)\1\s*?\)/gi,function(e,t,n){
return/^([a-z]{
3,10}
:|\/|#)/i.test(n)?e:'url("'+i+n+'")'}
);
var r=i.replace(/([\\\^\$*+[\]?{
}
.=!:(|)])/g,"\\$1");
n=n.replace(RegExp("\\b(behavior:\\s*?url\\('?\"?)"+r,"gi"),"$1")}
var u=document.createElement("style");
u.textContent=n;
u.media=t.media;
u.disabled=t.disabled;
u.setAttribute("data-href",t.getAttribute("href"));
s.insertBefore(u,t);
s.removeChild(t);
u.media=t.media}
}
;
try{
o.open("GET",r);
o.send(null)}
catch(n){
if(typeof XDomainRequest!="undefined"){
o=new XDomainRequest;
o.onerror=o.onprogress=function(){
}
;
o.onload=u;
o.open("GET",r);
o.send(null)}
}
t.setAttribute("data-inprogress","")}
,styleElement:function(t){
if(t.hasAttribute("data-noprefix"))return;
var n=t.disabled;
t.textContent=e.fix(t.textContent,!0,t);
t.disabled=n}
,styleAttribute:function(t){
var n=t.getAttribute("style");
n=e.fix(n,!1,t);
t.setAttribute("style",n)}
,process:function(){
t('link[rel="stylesheet"]:not([data-inprogress])').forEach(StyleFix.link);
t("style").forEach(StyleFix.styleElement);
t("[style]").forEach(StyleFix.styleAttribute)}
,register:function(t,n){
(e.fixers=e.fixers||[]).splice(n===undefined?e.fixers.length:n,0,t)}
,fix:function(t,n,r){
for(var i=0;
i<e.fixers.length;
i++)t=e.fixers[i](t,n,r)||t;
return t}
,camelCase:function(e){
return e.replace(/-([a-z])/g,function(e,t){
return t.toUpperCase()}
).replace("-","")}
,deCamelCase:function(e){
return e.replace(/[A-Z]/g,function(e){
return"-"+e.toLowerCase()}
)}
}
;
(function(){
setTimeout(function(){
t('link[rel="stylesheet"]').forEach(StyleFix.link)}
,10);
document.addEventListener("DOMContentLoaded",StyleFix.process,!1)}
)()}
)();
(function(e){
function t(e,t,r,i,s){
e=n[e];
if(e.length){
var o=RegExp(t+"("+e.join("|")+")"+r,"gi");
s=s.replace(o,i)}
return s}
if(!window.StyleFix||!window.getComputedStyle)return;
var n=window.PrefixFree={
prefixCSS:function(e,r,i){
var s=n.prefix;
n.functions.indexOf("linear-gradient")>-1&&(e=e.replace(/(\s|:|,)(repeating-)?linear-gradient\(\s*(-?\d*\.?\d*)deg/ig,function(e,t,n,r){
return t+(n||"")+"linear-gradient("+(90-r)+"deg"}
));
e=t("functions","(\\s|:|,)","\\s*\\(","$1"+s+"$2(",e);
e=t("keywords","(\\s|:)","(\\s|;
|\\}
|$)","$1"+s+"$2$3",e);
e=t("properties","(^|\\{
|\\s|;
)","\\s*:","$1"+s+"$2:",e);
if(n.properties.length){
var o=RegExp("\\b("+n.properties.join("|")+")(?!:)","gi");
e=t("valueProperties","\\b",":(.+?);
",function(e){
return e.replace(o,s+"$1")}
,e)}
if(r){
e=t("selectors","","\\b",n.prefixSelector,e);
e=t("atrules","@","\\b","@"+s+"$1",e)}
e=e.replace(RegExp("-"+s,"g"),"-");
e=e.replace(/-\*-(?=[a-z]+)/gi,n.prefix);
return e}
,property:function(e){
return(n.properties.indexOf(e)?n.prefix:"")+e}
,value:function(e,r){
e=t("functions","(^|\\s|,)","\\s*\\(","$1"+n.prefix+"$2(",e);
e=t("keywords","(^|\\s)","(\\s|$)","$1"+n.prefix+"$2$3",e);
return e}
,prefixSelector:function(e){
return e.replace(/^:{
1,2}
/,function(e){
return e+n.prefix}
)}
,prefixProperty:function(e,t){
var r=n.prefix+e;
return t?StyleFix.camelCase(r):r}
}
;
(function(){
var e={
}
,t=[],r={
}
,i=getComputedStyle(document.documentElement,null),s=document.createElement("div").style,o=function(n){
if(n.charAt(0)==="-"){
t.push(n);
var r=n.split("-"),i=r[1];
e[i]=++e[i]||1;
while(r.length>3){
r.pop();
var s=r.join("-");
u(s)&&t.indexOf(s)===-1&&t.push(s)}
}
}
,u=function(e){
return StyleFix.camelCase(e)in s}
;
if(i.length>0)for(var a=0;
a<i.length;
a++)o(i[a]);
else for(var f in i)o(StyleFix.deCamelCase(f));
var l={
uses:0}
;
for(var c in e){
var h=e[c];
l.uses<h&&(l={
prefix:c,uses:h}
)}
n.prefix="-"+l.prefix+"-";
n.Prefix=StyleFix.camelCase(n.prefix);
n.properties=[];
for(var a=0;
a<t.length;
a++){
var f=t[a];
if(f.indexOf(n.prefix)===0){
var p=f.slice(n.prefix.length);
u(p)||n.properties.push(p)}
}
n.Prefix=="Ms"&&!("transform"in s)&&!("MsTransform"in s)&&"msTransform"in s&&n.properties.push("transform","transform-origin");
n.properties.sort()}
)();
(function(){
function i(e,t){
r[t]="";
r[t]=e;
return!!r[t]}
var e={
"linear-gradient":{
property:"backgroundImage",params:"red,teal"}
,calc:{
property:"width",params:"1px + 5%"}
,element:{
property:"backgroundImage",params:"#foo"}
,"cross-fade":{
property:"backgroundImage",params:"url(a.png),url(b.png),50%"}
}
;
e["repeating-linear-gradient"]=e["repeating-radial-gradient"]=e["radial-gradient"]=e["linear-gradient"];
var t={
initial:"color","zoom-in":"cursor","zoom-out":"cursor",box:"display",flexbox:"display","inline-flexbox":"display",flex:"display","inline-flex":"display"}
;
n.functions=[];
n.keywords=[];
var r=document.createElement("div").style;
for(var s in e){
var o=e[s],u=o.property,a=s+"("+o.params+")";
!i(a,u)&&i(n.prefix+a,u)&&n.functions.push(s)}
for(var f in t){
var u=t[f];
!i(f,u)&&i(n.prefix+f,u)&&n.keywords.push(f)}
}
)();
(function(){
function s(e){
i.textContent=e+"{
}
";
return!!i.sheet.cssRules.length}
var t={
":read-only":null,":read-write":null,":any-link":null,"::selection":null}
,r={
keyframes:"name",viewport:null,document:'regexp(".")'}
;
n.selectors=[];
n.atrules=[];
var i=e.appendChild(document.createElement("style"));
for(var o in t){
var u=o+(t[o]?"("+t[o]+")":"");
!s(u)&&s(n.prefixSelector(u))&&n.selectors.push(o)}
for(var a in r){
var u=a+" "+(r[a]||"");
!s("@"+u)&&s("@"+n.prefix+u)&&n.atrules.push(a)}
e.removeChild(i)}
)();
n.valueProperties=["transition","transition-property"];
e.className+=" "+n.prefix;
StyleFix.register(n.prefixCSS)}
)(document.documentElement);
CSS代码(demo.css):
body,html{font-size:100%;padding:0;margin:0;}
/* Reset */
*,*:after,*:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
/* Clearfix hack by Nicolas Gallagher:http://nicolasgallagher.com/micro-clearfix-hack/ */
.clearfix:before,.clearfix:after{content:" ";display:table;}
.clearfix:after{clear:both;}
body{font-weight:500;font-size:1.05em;font-family:"Microsoft YaHei","宋体","Segoe UI","Lucida Grande",Helvetica,Arial,sans-serif,FreeSans,Arimo;}
a{color:rgba(255,255,255,0.6);outline:none;text-decoration:none;-webkit-transition:0.2s;transition:0.2s;}
a:hover,a:focus{color:#74777b;text-decoration:none;}
.container{margin:0 auto;}
CSS代码(style.css):
*{box-sizing:border-box;}
body{background-image:url(../images/retina_wood.png);background-size:100%;}
.container{position:relative;width:900px;height:500px;margin:60px auto 100px;font:1em 'Rationale',sans-serif;}
.slider,.img{width:inherit;height:inherit;}
.slider{position:relative;overflow:hidden;background-color:#000;border:8px solid #eee;border-radius:5px;box-shadow:0 7px 20px rgba(0,0,0,.5);}
.img{position:absolute;margin-left:-8px;perspective:500px;}
/*.img1 .frag{background:url(images/auto.jpg);background-size:cover;background-repeat:no-repeat;}
*/
.img1 .frag{background-image:url(../images/1.jpg)}
.img2 .frag{background-image:url(../images/2.jpg)}
.img3 .frag{background-image:url(../images/3.jpg)}
.img4 .frag{background-image:url(../images/4.jpg)}
.img5 .frag{background-image:url(../images/5.jpg)}
.img6 .frag{background-image:url(../images/6.jpg)}
.frag{width:150px;height:inherit;float:left;opacity:0;z-index:0;transform-origin:center right;transform:rotateY(90deg) translateZ(100px) scale(1.5);transition:transform .6s,opacity .6s,-webkit-filter 2s ease-out;-webkit-filter:saturate(0) blur(10px) brightness(.6) contrast(4);}
.img .frag2{background-position:-150px 0;transition-delay:.2s;}
.img .frag3{background-position:-300px 0;transition-delay:.4s;}
.img .frag4{background-position:-450px 0;transition-delay:.6s;}
.img .frag5{background-position:-600px 0;transition-delay:.8s;}
.img .frag6{background-position:-750px 0;transition-delay:1s;}
#slide1:checked ~ .slider .img1 .frag,#slide2:checked ~ .slider .img2 .frag,#slide3:checked ~ .slider .img3 .frag,#slide4:checked ~ .slider .img4 .frag,#slide5:checked ~ .slider .img5 .frag,#slide6:checked ~ .slider .img6 .frag{transform:rotateY(0) translateZ(0) scale(1);-webkit-filter:saturate(1) blur(0) brightness(1) contrast(1);opacity:1;z-index:1;}
.controls{position:absolute;bottom:-50px;left:50%;margin-left:-115px;/*(6elem30px+5el10px)/2=115px*/
}
.controls label{display:block;height:10px;width:30px;float:left;background-color:#000;margin-right:10px;cursor:pointer;opacity:.2;transition:opacity .5s;}
.controls label:hover,.side-controls label:hover,#slide1:checked ~ .controls label:nth-of-type(1),#slide2:checked ~ .controls label:nth-of-type(2),#slide3:checked ~ .controls label:nth-of-type(3),#slide4:checked ~ .controls label:nth-of-type(4),#slide5:checked ~ .controls label:nth-of-type(5),#slide6:checked ~ .controls label:nth-of-type(6){opacity:.8;}
.side-controls label{position:absolute;display:block;border-top:30px solid transparent;border-bottom:30px solid transparent;top:50%;margin-top:-15px;cursor:pointer;opacity:.2;transition:opacity .5s;}
#slide1:checked ~ .side-controls label:nth-of-type(6),#slide2:checked ~ .side-controls label:nth-of-type(1),#slide3:checked ~ .side-controls label:nth-of-type(2),#slide4:checked ~ .side-controls label:nth-of-type(3),#slide5:checked ~ .side-controls label:nth-of-type(4),#slide6:checked ~ .side-controls label:nth-of-type(5){left:-40px;border-right:40px solid #000;}
#slide1:checked ~ .side-controls label:nth-of-type(2),#slide2:checked ~ .side-controls label:nth-of-type(3),#slide3:checked ~ .side-controls label:nth-of-type(4),#slide4:checked ~ .side-controls label:nth-of-type(5),#slide5:checked ~ .side-controls label:nth-of-type(6),#slide6:checked ~ .side-controls label:nth-of-type(1){right:-40px;border-left:40px solid #000;}
.slider{background-color:#000;}
.container > input{display:none;}
/*.slider{display:none;}
*/
.captions > div{position:absolute;right:20px;bottom:7px;color:transparent;text-shadow:0 0 60px transparent;font-size:3em;z-index:1;text-transform:uppercase;transition:text-shadow 2s;}
#slide2:checked ~ .slider .captions .c2,#slide1:checked ~ .slider .captions .c1,#slide3:checked ~ .slider .captions .c3,#slide4:checked ~ .slider .captions .c4,#slide5:checked ~ .slider .captions .c5,#slide6:checked ~ .slider .captions .c6{text-shadow:0 0 0 rgba(255,255,255,.9)}