141 lines
4.0 KiB
HTML
141 lines
4.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
|
|
<title>html5+ js +css3 点击后水波纹扩散效果 兼容移动端-幸凡学习网</title>
|
|
|
|
<style>
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.center {
|
|
text-align: center
|
|
}
|
|
|
|
.btn {
|
|
position: relative;
|
|
width: 13em;
|
|
height: 3em;
|
|
margin: 2em;
|
|
border: none;
|
|
outline: none;
|
|
letter-spacing: .2em;
|
|
font-weight: bold;
|
|
background: #999;
|
|
cursor: pointer;
|
|
overflow: hidden;
|
|
user-select: none;
|
|
border-radius: 2px;
|
|
color: #fff;
|
|
}
|
|
|
|
button:nth-child(2) {
|
|
background: #4285f4;
|
|
}
|
|
|
|
button:nth-child(3) {
|
|
background: #00bad2;
|
|
}
|
|
|
|
button:nth-child(4) {
|
|
background: #ff8a80;
|
|
}
|
|
|
|
button:nth-child(5) {
|
|
background: #ffae00;
|
|
}
|
|
|
|
button:nth-child(6) {
|
|
background: #aec156;
|
|
}
|
|
|
|
button:nth-child(7) {
|
|
background: #a060a8;
|
|
}
|
|
|
|
button:nth-child(8) {
|
|
background: #a78660;
|
|
}
|
|
|
|
button:nth-child(9) {
|
|
background: #5da065;
|
|
}
|
|
|
|
button:nth-child(10) {
|
|
background: #5e6b9a;
|
|
}
|
|
|
|
button:nth-child(11) {
|
|
background: #9a5e5e;
|
|
}
|
|
|
|
button:nth-child(12) {
|
|
background: #666;
|
|
}
|
|
|
|
.ripple {
|
|
position: absolute;
|
|
background: rgba(0, 0, 0, .15);
|
|
border-radius: 100%;
|
|
transform: scale(0);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.ripple.show {
|
|
animation: ripple .75s ease-out;
|
|
}
|
|
|
|
@keyframes ripple {
|
|
to {
|
|
transform: scale(2);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<h1 class="center">html5 +css3 点击后水波纹扩散效果 兼容移动端</h1>
|
|
<div class="main center">
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
<button class="btn">BUTTON</button>
|
|
</div>
|
|
<script>
|
|
var addRippleEffect = function(e) {
|
|
var target = e.target;
|
|
if (target.className.toLowerCase() !== 'btn') return false;
|
|
var rect = target.getBoundingClientRect();
|
|
var ripple = target.querySelector('.ripple');
|
|
if (!ripple) {
|
|
ripple = document.createElement('span');
|
|
ripple.className = 'ripple'
|
|
ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px'
|
|
target.appendChild(ripple);
|
|
}
|
|
ripple.classList.remove('show');
|
|
var top = e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop;
|
|
var left = e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft;
|
|
ripple.style.top = top + 'px'
|
|
ripple.style.left = left + 'px'
|
|
ripple.classList.add('show');
|
|
return false;
|
|
}
|
|
document.addEventListener('click', addRippleEffect, false);
|
|
</script>
|
|
</body>
|
|
|
|
</html> |