html5 +css3 点击后水波纹扩散效果 兼容移动端
<!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>
html5 +css3 点击后水波纹扩散效果 兼容移动端的更多相关文章
- 如何使用 HTML5 Canvas 制作水波纹效果
今天,我们继续分享 JavaScript 实现的效果例子,这篇文章会介绍使用 JavaScript 实现水波纹效果.水波效果以图片为背景,点击图片任意位置都会触发.有时候,我们使用普通的 Javasc ...
- 很实用的HTML5+CSS3注册登录窗体切换效果
1. [代码]3个很实用的HTML5+CSS3注册登录窗体切换效果 <!DOCTYPE html><!--[if lt IE 7 ]> <html lang=" ...
- 用HTML5 Canvas 做擦除及扩散效果
2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...
- javascript+html5+css3下拉刷新 数据效果
文章摘自:suchso.com/projecteactual/javascript-html5-css3-taobao-xiala-data.html segmentfault.com/a/11900 ...
- UWP:使用Composition实现类似安卓的水波纹Ripple效果
先放效果图: 首先,建立一个RippleHelper.cs文件,然后建立以下附加属性: IsFillEnable:是否扩大到整个控件 RippleDuration:持续时间 RippleRadius: ...
- css3动画水波纹、波浪
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HTML5/CSS3实现添加锁屏效果
锁屏效果,也就是将屏幕置于模态,不允许用户触发任何动作,只能解除锁定后才能继续使用,jQueryUI的dialog有模态对话框,这一点不难做到.那么,首先需要在页面中添加一个div层,用于做模态的层 ...
- Android 水波纹点击效果(Ripple Effect)
上周Android发布了Android M的Preview版本.但想必Android5.0很多炫酷效果,多数开发者还没有使用过,那更不要说广大用户了. 本文介绍的是Android5.0中其中一个炫酷的 ...
- Android水波纹特效的简单实现
我的开源页面指示器框架 MagicIndicator,各位一定不要错过哦. 水波纹特效,想必大家或多或少见过,在我的印象中,大致有如下几种: 支付宝 "咻咻咻" 式 流量球 &qu ...
随机推荐
- Maven教程--02设置Maven本地仓库|查看Maven中央仓库
一:设置Maven本地仓库 Maven默认仓库的路径:~\.m2\repository,~表示我的个人文档:例如:C:\Users\Edward\.m2\repository:如下图: Maven的配 ...
- 《TCP/IP 详解 卷1:协议》第 11 章:名称解析和域名系统
引言 到目前为止,我们使用 IP 地址来研究参与网络的主机.对于大众来说,这些地址太繁琐且难以记忆.为了使用如 TCP 和 IP 等协议,主机名称通过名为名称解析(name resolution)的过 ...
- maven导入项目时出现“Cannot read lifecycle mapping metadata …… invalid END header (bad central directory offset)pom”错误的解决方法
出现该错误是因为jar包版本不匹配,比如linux上的jar包导入到windows上了.可以将.m2\repository的org.apache.maven.plugins删掉然后让maven重新下载 ...
- Android表情开发
Android表情开发 效果图: 源码下载-github:https://github.com/SiberiaDante/EmotionApp (觉得有用的给个星星,支持一下哦)
- chrome浏览器下的xdebug helper使用方法
chrome浏览器下的xdebug helper使用方法 自从安装了xdebug后,发现每次调试都需要从eclipse中先从头启动,然后一步步走到你要调试的页面,而不是说想什么时候调试就什么时 ...
- SQLSERVER 修改实例名以及架构信息
1. GUI的方式 后者是 alter database 的方式修改 instance的名字 2. 在全局的安全性下面创建用户. 3. 在实例的安全性下面创建架构和用户(架构名与用户名一直, 使用新实 ...
- 一个Flume 异常(Put queue for MemoryTransaction of capacity 100 full)的排查和解决思路
最近在做一个分布式调用链跟踪系统, 在两个地方采用了flume (我使用的flume版本是1.5.0-cdh5.4.4),一个是宿主系统 ,用flume agent进行日志搜集. 一个是从kafka拉 ...
- Python基础【3】:Python中的深浅拷贝解析
深浅拷贝 在研究Python的深浅拷贝区别前需要先弄清楚以下的一些基础概念: 变量--引用--对象(可变对象,不可变对象) 切片(序列化对象)--拷贝(深拷贝,浅拷贝) 我是铺垫~ 一.[变量--引用 ...
- eclipse 导入 gradle 项目遇到 UnsupportedConfigurationException 异常
异常描述: org.eclipse.buildship.core.UnsupportedConfigurationException: Project at 'D:\XXXX_workspace\XX ...
- NOI2017 退役记
OI生涯最后一篇游记写点不开心的让大家开心一下 Day -2(7.16) 上午的模拟赛奥妙重重. 下午也没怎么改题,看了一些新题,发现都不会,都看了下题解,发现大部分没看懂,好慌. 发现板子还没怎么复 ...