以下是 CSS3实现会眨眼的蚱蜢动画特效代码 的示例演示效果:
部分效果截图:
HTML代码(index.html):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS3实现会眨眼的蚱蜢动画</title>
<style>
body{
margin: 0;
padding: 0;
background: #e4ffdc;
}
.wrapper{
position: absolute;
width: 270px;
height: 100px;
top: calc(50% - 30px);
left: calc(50% - 90px);
}
.body{
position: absolute;
top: 15px;
left: 40px;
width: 200px;
height: 60px;
z-index: 1;
background: #32983e;
transform: skew(-25deg);
}
.body .eye{
position: absolute;
right: 10px;
top: 10px;
z-index: 1;
width: 12px;
height: 12px;
border-radius: 360px;
background: #006837;
animation: eye 2.5s 1s linear infinite;
}
@keyframes eye{
0%{
width: 12px;
height: 12px;
border-radius: 360px;
}
5%{
width: 12px;
height: 1px;
border-radius: 0px;
}
10%{
width: 12px;
height: 12px;
border-radius: 360px;
}
}
.body .back{
position: absolute;
left: -90px;
width: 220px;
height: 60px;
border-bottom-left-radius: 20px;
background: #32983e;
z-index: 0;
transform: skew(55deg);
}
.body .wing{
position: absolute;
top: -3px;
left: 25px;
width: 120px;
height: 60px;
background: rgba(131,195,63,0.8);
transform: rotate(3deg);
z-index: 4;
border-bottom-left-radius: 50px;
}
.body .wing:before{
content: '';
position: absolute;
left: -160px;
width: 205px;
height: 60px;
border-bottom-left-radius: 400px;
background: rgba(131,195,63,0.8);
transform: skew(55deg);
}
.body .shading{
position: absolute;
top: 0px;
left: 0px;
background: #39b549;
height: 50px;
width: 200px;
border-bottom-right-radius: 170px;
border-bottom-left-radius: 400px;
}
.shading_back{
position: absolute;
top: 0px;
left: -95px;
background: #39b549;
height: 50px;
width: 120px;
border-bottom-left-radius: 100px;
transform: skew(55deg);
z-index: 2;
overflow: hidden;
}
.shading_back .stripe1{
position: absolute;
top: -50px;
left: -16px;
width: 4px;
height: 200px;
background: #016a37;
transform: skew(-55deg);
}
.shading_back .stripe2{
position: absolute;
top: -50px;
left: 12px;
width: 6px;
height: 200px;
background: #016a37;
transform: skew(-50deg);
}
.shading_back .stripe3{
position: absolute;
top: -50px;
left: 40px;
width: 9px;
height: 200px;
background: #016a37;
transform: skew(-45deg);
}
.shading_back .stripe4{
position: absolute;
top: -50px;
left: 65px;
width: 9px;
height: 200px;
background: #016a37;
transform: skew(-40deg);
}
.leg{
position: absolute;
top: -10px;
left: -50px;
width: 200px;
height: 40px;
z-index: 3;
overflow: hidden;
transform: rotate(40deg);
}
.leg .main{
position: absolute;
top: 1px;
left: 5px;
background: #009245;
transform: skew(-30deg);
width: 200px;
height: 10px;
}
.leg .curve1{
position: absolute;
top: 10px;
left: 245px;
background: #009245;
transform: skew(80deg);
border-bottom-left-radius: 80px;
width: 200px;
height: 20px;
border-bottom: 65px solid #007a3a;
}
.leg_part2{
position: absolute;
top: -68px;
left: 18px;
width: 6px;
height: 175px;
transform: rotate(-25deg);
z-index: 6;
background: #009245;
}
.foot{
position: absolute;
z-index: 1;
left: 25px;
top: 71px;
width: 0;
height: 0;
transform: rotate(-102.5deg);
border-top: 45px solid transparent;
border-bottom: 10px solid transparent;
border-right:10px solid #006635;
}
.foot:after{
content:'';
position: absolute;
right: -11px;
bottom: -11px;
height: 12px;
width: 13px;
background: #006635;
border-top-left-radius: 100px;
transform: rotate(102.5deg) skew(25deg);
}
.leg2{
position: absolute;
top: -10px;
left: -70px;
width: 200px;
height: 40px;
overflow: hidden;
z-index: 0;
transform: rotate(38deg);
}
.leg2 .main{
position: absolute;
top: 1px;
left: 5px;
background: #39b549;
transform: skew(-30deg);
width: 200px;
height: 10px;
}
.leg2 .curve1{
position: absolute;
top: 10px;
left: 245px;
background: #39b549;
transform: skew(80deg);
border-bottom-left-radius: 80px;
width: 200px;
height: 20px;
border-bottom: 65px solid #32983d;
}
.leg_part3{
position: absolute;
top: -70px;
left: 4px;
width: 6px;
height: 175px;
transform: rotate(-31deg);
z-index: 0;
background: #39b549;
}
.small_leg{
position: absolute;
top: 45px;
left: 140px;
width: 9px;
height: 50px;
z-index: 7;
transform: rotate(-60deg);
background: #006837;
}
.small_leg2{
transform: rotate(60deg) scaleX(-1);
left: 180px;
}
.small_leg:after{
content: '';
position: absolute;
left: -50px;
top: 0px;
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 10px solid transparent;
border-top: 10px solid #006837;
}
.a{
position: absolute;
top: -70px;
left: 24px;
width: 240px;
height: 100px;
border-radius: 360px;
background: #3cb64b;
z-index: 0;
}
.a:before{
content: '';
position: absolute;
top: 2px;
left: -3px;
width: 240px;
height: 100px;
border-radius: 360px;
background: #e4ffdc;
z-index: 0;
}
.b{
position: absolute;
top: -60px;
left: 20px;
width: 240px;
height: 90px;
border-radius: 360px;
background: #3cb64b;
z-index: 0;
}
.b:before{
content: '';
position: absolute;
top: 2px;
left: -3px;
width: 240px;
height: 90px;
border-radius: 360px;
background: #e4ffdc;
z-index: 0;
}
.circle{
position: absolute;
top: -100px;
left: -90px;
z-index: -1;
width: 400px;
height: 400px;
border-radius: 400px;
transform: rotateX(85deg);
background: rgba(0,0,0,0.2);
}
.credits{
position: absolute;
bottom: 0px;
left: 0px;
font-family: Helvetica, Arial;
color: #39b549;
background: rgba(131,195,63,0.4);
border-top-right-radius: 6px;
padding: 5px 10px 5px 10px;
}
.credits a{
text-decoration: none;
color: #006837;
}
</style>
<script src="js/prefixfree.min.js"></script>
</head>
<body>
<div class="wrapper">
<div class="a"></div>
<div class="b"></div>
<div class="body">
<div class="back"></div>
<div class="shading">
<div class="shading_back">
<div class="stripe1"></div>
<div class="stripe2"></div>
<div class="stripe3"></div>
<div class="stripe4"></div>
</div>
</div>
<div class="eye"></div>
<div class="wing"></div>
</div>
<div class="leg">
<div class="curve1"></div>
<div class="main"></div>
</div>
<div class="leg_part2"></div>
<div class="foot"></div>
<div class="leg2">
<div class="curve1"></div>
<div class="main"></div>
</div>
<div class="leg_part3"></div>
<div class="small_leg"></div>
<div class="small_leg small_leg2"></div>
<div class="circle"></div>
</div>
</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=(/^[a-z]{
3,10}
:/.exec(i)||[""])[0],o=(/^[a-z]{
3,10}
:\/\/[^\/]+/.exec(i)||[""])[0],u=/^([^?]*)\??/.exec(r)[1],a=t.parentNode,f=new XMLHttpRequest,l;
f.onreadystatechange=function(){
f.readyState===4&&l()}
,l=function(){
var n=f.responseText;
if(n&&t.parentNode&&(!f.status||f.status<400||f.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:/^\/\//.test(n)?'url("'+s+n+'")':/^\//.test(n)?'url("'+o+n+'")':/^\?/.test(n)?'url("'+u+n+'")':'url("'+i+n+'")'}
);
var r=i.replace(/([\\\^\$*+[\]?{
}
.=!:(|)])/g,"\\$1");
n=n.replace(RegExp("\\b(behavior:\\s*?url\\('?\"?)"+r,"gi"),"$1")}
var l=document.createElement("style");
l.textContent=n,l.media=t.media,l.disabled=t.disabled,l.setAttribute("data-href",t.getAttribute("href")),a.insertBefore(l,t),a.removeChild(t),l.media=t.media}
}
;
try{
f.open("GET",r),f.send(null)}
catch(n){
typeof XDomainRequest!="undefined"&&(f=new XDomainRequest,f.onerror=f.onprogress=function(){
}
,f.onload=l,f.open("GET",r),f.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("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(){
}
,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)}
return 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),e}
,property:function(e){
return(n.properties.indexOf(e)?n.prefix:"")+e}
,value:function(e,r){
return e=t("functions","(^|\\s|,)","\\s*\\(","$1"+n.prefix+"$2(",e),e=t("keywords","(^|\\s)","(\\s|$)","$1"+n.prefix+"$2$3",e),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){
return r[t]="",r[t]=e,!!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",grid:"display","inline-grid":"display","min-content":"width"}
;
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){
return i.textContent=e+"{
}
",!!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代码(style.css):
body{margin:0;padding:0;background:#e4ffdc;}
.wrapper{position:absolute;width:270px;height:100px;top:calc(50% - 30px);left:calc(50% - 90px);}
.body{position:absolute;top:15px;left:40px;width:200px;height:60px;z-index:1;background:#32983e;transform:skew(-25deg);}
.body .eye{position:absolute;right:10px;top:10px;z-index:1;width:12px;height:12px;border-radius:360px;background:#006837;animation:eye 2.5s 1s linear infinite;}
@keyframes eye{0%{width:12px;height:12px;border-radius:360px;}
5%{width:12px;height:1px;border-radius:0px;}
10%{width:12px;height:12px;border-radius:360px;}
}
.body .back{position:absolute;left:-90px;width:220px;height:60px;border-bottom-left-radius:20px;background:#32983e;z-index:0;transform:skew(55deg);}
.body .wing{position:absolute;top:-3px;left:25px;width:120px;height:60px;background:rgba(131,195,63,0.8);transform:rotate(3deg);z-index:4;border-bottom-left-radius:50px;}
.body .wing:before{content:'';position:absolute;left:-160px;width:205px;height:60px;border-bottom-left-radius:400px;background:rgba(131,195,63,0.8);transform:skew(55deg);}
.body .shading{position:absolute;top:0px;left:0px;background:#39b549;height:50px;width:200px;border-bottom-right-radius:170px;border-bottom-left-radius:400px;}
.shading_back{position:absolute;top:0px;left:-95px;background:#39b549;height:50px;width:120px;border-bottom-left-radius:100px;transform:skew(55deg);z-index:2;overflow:hidden;}
.shading_back .stripe1{position:absolute;top:-50px;left:-16px;width:4px;height:200px;background:#016a37;transform:skew(-55deg);}
.shading_back .stripe2{position:absolute;top:-50px;left:12px;width:6px;height:200px;background:#016a37;transform:skew(-50deg);}
.shading_back .stripe3{position:absolute;top:-50px;left:40px;width:9px;height:200px;background:#016a37;transform:skew(-45deg);}
.shading_back .stripe4{position:absolute;top:-50px;left:65px;width:9px;height:200px;background:#016a37;transform:skew(-40deg);}
.leg{position:absolute;top:-10px;left:-50px;width:200px;height:40px;z-index:3;overflow:hidden;transform:rotate(40deg);}
.leg .main{position:absolute;top:1px;left:5px;background:#009245;transform:skew(-30deg);width:200px;height:10px;}
.leg .curve1{position:absolute;top:10px;left:245px;background:#009245;transform:skew(80deg);border-bottom-left-radius:80px;width:200px;height:20px;border-bottom:65px solid #007a3a;}
.leg_part2{position:absolute;top:-68px;left:18px;width:6px;height:175px;transform:rotate(-25deg);z-index:6;background:#009245;}
.foot{position:absolute;z-index:1;left:25px;top:71px;width:0;height:0;transform:rotate(-102.5deg);border-top:45px solid transparent;border-bottom:10px solid transparent;border-right:10px solid #006635;}
.foot:after{content:'';position:absolute;right:-11px;bottom:-11px;height:12px;width:13px;background:#006635;border-top-left-radius:100px;transform:rotate(102.5deg) skew(25deg);}
.leg2{position:absolute;top:-10px;left:-70px;width:200px;height:40px;overflow:hidden;z-index:0;transform:rotate(38deg);}
.leg2 .main{position:absolute;top:1px;left:5px;background:#39b549;transform:skew(-30deg);width:200px;height:10px;}
.leg2 .curve1{position:absolute;top:10px;left:245px;background:#39b549;transform:skew(80deg);border-bottom-left-radius:80px;width:200px;height:20px;border-bottom:65px solid #32983d;}
.leg_part3{position:absolute;top:-70px;left:4px;width:6px;height:175px;transform:rotate(-31deg);z-index:0;background:#39b549;}
.small_leg{position:absolute;top:45px;left:140px;width:9px;height:50px;z-index:7;transform:rotate(-60deg);background:#006837;}
.small_leg2{transform:rotate(60deg) scaleX(-1);left:180px;}
.small_leg:after{content:'';position:absolute;left:-50px;top:0px;width:0;height:0;border-left:50px solid transparent;border-right:10px solid transparent;border-top:10px solid #006837;}
.a{position:absolute;top:-70px;left:24px;width:240px;height:100px;border-radius:360px;background:#3cb64b;z-index:0;}
.a:before{content:'';position:absolute;top:2px;left:-3px;width:240px;height:100px;border-radius:360px;background:#e4ffdc;z-index:0;}
.b{position:absolute;top:-60px;left:20px;width:240px;height:90px;border-radius:360px;background:#3cb64b;z-index:0;}
.b:before{content:'';position:absolute;top:2px;left:-3px;width:240px;height:90px;border-radius:360px;background:#e4ffdc;z-index:0;}
.circle{position:absolute;top:-100px;left:-90px;z-index:-1;width:400px;height:400px;border-radius:400px;transform:rotateX(85deg);background:rgba(0,0,0,0.2);}
.credits{position:absolute;bottom:0px;left:0px;font-family:Helvetica,Arial;color:#39b549;background:rgba(131,195,63,0.4);border-top-right-radius:6px;padding:5px 10px 5px 10px;}
.credits a{text-decoration:none;color:#006837;}