原生js实现简单的Ripple按钮实例代码


Posted in Javascript onMarch 24, 2017

整理文档,搜刮出一个原生js实现简单的Ripple按钮的代码,稍微整理精简一下做下分享。

效果如图

原生js实现简单的Ripple按钮实例代码

准备食材(html部分)

<ul id="nav">
  <li>
   <a href='#'>
    <span>首页</span>
   <span class="circle"></span>
   </a>
  </li>
  <li>
   <a href='#'>
    <span>我的</span>
   <span class="circle"></span>
   </a>
  </li>
  <li>
   <a href='#'>
    <span>更多</span>
   <span class="circle"></span>
   </a>
  </li>
 </ul>

典型的菜单li布局,里面的span.circle表示的是触摸弹出的小圆圈。

准备辅料 (css部分)

#nav {
 display: flex;
 }
 #nav li {
 position: relative;
 overflow: hidden;
 flex: 1;
 }
 li a {
  display: flex;
 flex-direction: column;
 justify-content: center;
 align-items: center;
 }

 .circle{
 position: absolute;
 background: rgba(86,187,247,.1);
 width: 1px;
 height: 1px;
 top:50%;
 left: 50%;
 border-radius: 50%;
 }
 .circle.act{
  animation: navCircle .4s;
 }

 @keyframes navCircle
 {
 from {transform: scale(0);border-radius: 50%;}
 to {transform:scale(200);border-radius: 50%;}
 }

我的思路是这样的,给li相对定位,给小圆圈绝对定位,再给小圆圈添加动画navCircle,采用css3的缩放使其变大,至于为什么是200倍和.4s呢,经过测试这样更人性化,其余的倍数你们也可以试试。

大火烹饪 (js部分)

var li = document.getElementById('nav').querySelectorAll('li');
 var circle = document.getElementById('nav').querySelectorAll('.circle');
   for(var i=0,len = li.length;i<len;i++){
    ((i)=>{
    li[i].addEventListener('click',(e)=>{
     circle[i].setAttribute('class','circle act');
     circle[i].setAttribute('style','top:'+e.layerY+'px;left:'+e.layerX+'px');
    });

    li[i].addEventListener('touchend',()=>{
     circle[i].setAttribute('class','circle');
    })
    })(i)

   }

代码很简单,相信大家也猜到了,点击li的时候给小圆圈添加class 'act',并且设置小圆圈的起始位置,监听触摸结束的时候,取消class 'act',有人肯定要问了,为什么你不用touchstart呢,唉,因为没有layerY这个属性,找了半天都没找到啊。还有为什么不用forEach,有的浏览器不支持啊,泪奔= = !

友情提示!touchend仅支持移动端

结束

做这个部分是因为我们安卓app里面有这个功能,所以我就想看看h5怎么做,开始的思路是让宽度和高度随着时间变大,但是实现了之后感觉性能不好,所以才想到了直接增加倍数呗,于是这个功能变完美诞生了,开始享用这份套餐把 !

Javascript 相关文章推荐
javascript实现的listview效果
Apr 28 Javascript
JavaScript Date对象 日期获取函数
Dec 19 Javascript
基于jquery实现的表格分页实现代码
Jun 21 Javascript
JavaScript中的setMilliseconds()方法使用详解
Jun 11 Javascript
浅谈JavaScript字符串拼接
Jun 25 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
Jan 06 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
一篇文章带你从零快速上手Rollup
Sep 07 Javascript
vue操作dom元素的3种方法示例
Sep 20 Javascript
JS实现超级好看的鼠标小尾巴特效
Dec 01 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 #jQuery
jQuery实现的背景颜色渐变动画效果示例
Mar 24 #jQuery
重新理解JavaScript的六种继承方式
Mar 24 #Javascript
JavaScript验证知识整理
Mar 24 #Javascript
Bootstrap常用组件学习(整理)
Mar 24 #Javascript
详解打造 Vue.js 可复用组件
Mar 24 #Javascript
JavaScript获取URL参数的方法之一
Mar 24 #Javascript
You might like
ADODB的数据库封包程序库
2006/12/31 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
node+koa实现数据mock接口的方法
2017/09/20 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
python中pycurl库的用法实例
2014/09/30 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
Python接口测试文件上传实例解析
2020/05/22 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
日语翻译个人求职的自我评价
2013/10/14 职场文书
会计实习生自我鉴定
2013/12/12 职场文书
24岁生日感言
2014/01/13 职场文书
骨干教师培训感言
2014/01/16 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书