原生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中处理时间之getHours()方法的使用
Jun 10 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
jquery实现网页定位导航
Aug 23 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
Mar 30 Javascript
Angular.JS去掉访问路径URL中的#号详解
Mar 30 Javascript
Angular中$state.go页面跳转并传递参数的方法
May 09 Javascript
Three.js加载外部模型的教程详解
Nov 10 Javascript
一文快速了解JQuery中的AJAX
May 31 jQuery
layui表格 列自动适应大小失效的解决方法
Sep 06 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
Sep 11 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
使用AutoJs实现微信抢红包的代码
Dec 31 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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
第三节--定义一个类
2006/11/16 PHP
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
2016/05/31 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
Nodejs模块载入运行原理
2018/02/23 NodeJs
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
python基础教程项目三之万能的XML
2018/04/02 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
10个示例带你掌握python中的元组
2020/11/23 Python
python多线程和多进程关系详解
2020/12/14 Python
自荐信怎么写呢?
2013/12/09 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
教师节商场活动方案
2014/02/13 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
优秀班集体申报材料
2014/12/25 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
合同审查法律意见书
2015/06/04 职场文书