<head>
<meta charset="utf-8">
<title>按钮点击气泡效果</title>
<script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<button class="bubbly-button">
点击气泡动画
</button>
</body>
body {
font-size:16px;
font-family:'Helvetica','Arial',sans-serif;
text-align:center;
background-color:#f8faff;
}
.bubbly-button {
font-family:'Helvetica','Arial',sans-serif;
display:inline-block;
font-size:1em;
padding:1em 2em;
margin-top:100px;
margin-bottom:60px;
appearance:none;
appearance:none;
background-color:#ff3de8;
color:#fff;
border-radius:4px;
border:none;
cursor:pointer;
position:relative;
transition:transform ease-in 0.1s,box-shadow ease-in 0.25s;
box-shadow:0 2px 15px rgba(255,0,251,0.5);
}
.bubbly-button:focus {
outline:0;
}
.bubbly-button:before,.bubbly-button:after {
position:absolute;
content:'';
display:block;
width:140%;
height:100%;
left:-20%;
z-index:-1000;
transition:all ease-in-out 0.5s;
background-repeat:no-repeat;
}
.bubbly-button:before {
display:none;
top:-75%;
background-image:radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,transparent 20%,#ff0081 20%,transparent 30%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,transparent 10%,#ff0081 15%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%);
background-size:10% 10%,20% 20%,15% 15%,20% 20%,18% 18%,10% 10%,15% 15%,10% 10%,18% 18%;
}
.bubbly-button:after {
display:none;
bottom:-75%;
background-image:radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,transparent 10%,#ff0081 15%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%);
background-size:15% 15%,20% 20%,18% 18%,20% 20%,15% 15%,10% 10%,20% 20%;
}
.bubbly-button:active {
transform:scale(0.9);
background-color:#e60074;
box-shadow:0 2px 25px rgba(255,0,130,0.2);
}
.bubbly-button.animate:before {
display:block;
animation:topBubbles ease-in-out 0.75s forwards;
}
.bubbly-button.animate:after {
display:block;
animation:bottomBubbles ease-in-out 0.75s forwards;
}
@keyframes topBubbles {
0% {
background-position:5% 90%,10% 90%,10% 90%,15% 90%,25% 90%,25% 90%,40% 90%,55% 90%,70% 90%;
}
50% {
background-position:0% 80%,0% 20%,10% 40%,20% 0%,30% 30%,22% 50%,50% 50%,65% 20%,90% 30%;
}
100% {
background-position:0% 70%,0% 10%,10% 30%,20% -10%,30% 20%,22% 40%,50% 40%,65% 10%,90% 20%;
background-size:0% 0%,0% 0%,0% 0%,0% 0%,0% 0%,0% 0%;
}
}@keyframes bottomBubbles {
0% {
background-position:10% -10%,30% 10%,55% -10%,70% -10%,85% -10%,70% -10%,70% 0%;
}
50% {
background-position:0% 80%,20% 80%,45% 60%,60% 100%,75% 70%,95% 60%,105% 0%;
}
100% {
background-position:0% 90%,20% 90%,45% 70%,60% 110%,75% 80%,95% 70%,110% 10%;
background-size:0% 0%,0% 0%,0% 0%,0% 0%,0% 0%,0% 0%;
}
}
var animateButton = function(e) {
e.preventDefault;
// reset animation 复位动画
e.target.classList.remove('animate');
e.target.classList.add('animate');
setTimeout(function() {
e.target.classList.remove('animate');
}, 700);
};
var btn = document.getElementsByClassName("bubbly-button");
for (var i = 0; i < btn.length; i++) {
btn[i].addEventListener('click', animateButton, false);
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.