<!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>

最新文章

  1. [.NET逆向] .net IL 指令速查(net破解必备)
  2. ftp 根据特定正则匹配文件名 下载到本地 并且上传文件到ftp java *** 最爱那水货
  3. Oracle开机自启动
  4. SQL SERVER 内存分配及常见内存问题 DMV查询
  5. 基于MVC4+EasyUI的Web开发框架经验总结(6)--在页面中应用下拉列表的处理
  6. Git+VirtalBaox+Vagrant创建Linux虚拟机
  7. atitit.hbnt orm db 新新增更新最佳实践o99
  8. CodeForces 146A Lucky Ticket
  9. Android中的动画
  10. jsp字段判空
  11. ENetwork Basic Configuration PT Practice SBA
  12. MonoDeveloper 快捷键
  13. MyEclipse代码提示设置
  14. python列表的交、并、差集
  15. [物理学与PDEs]第3章习题7 快、慢及Alfv\&#39;en 特征速度的比较
  16. 分词工具Hanlp基于感知机的中文分词框架
  17. UI设计学习之工具中的色彩模式分析
  18. Condition线程通信(七)
  19. rtrim
  20. 常用的第三方模块 psutil url

热门文章

  1. spring冲刺第八天
  2. Java每日学习笔记1
  3. Head First Java &amp; 构造函数
  4. AVMoviePlayer 视频播放器
  5. &lt;mvc:annotation-driven/&gt;的作用
  6. Python入门:逻辑判断与运算符
  7. Load generator连接失败的解决办法!(转)
  8. 第二版_TestNG+Excel+(HTTP+JSON) 简单接口测试
  9. [转帖]CPU 的缓存
  10. [转帖]22个必须学习的Linux安全命令