全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

原生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怎么做,开始的思路是让宽度和高度随着时间变大,但是实现了之后感觉性能不好,所以才想到了直接增加倍数呗,于是这个功能变完美诞生了,开始享用这份套餐把 !


# 原生js实现Ripple按钮  # js实现Ripple按钮  # js点击button按钮跳转到另一个新页面  # javascript怎么禁用浏览器后退按钮  # JavaScript给按钮绑定点击事件(onclick)的方法  # JS/jQuery实现默认显示部分文字点击按钮显示全部内容  # javascript 按回车键相应按钮提交事件  # js代码实现点击按钮出现60秒倒计时  # js获取单选按钮的数据  # js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码  # js实现点击左右按钮轮播图片效果实例  # JSP单选按钮验证、下拉框验证、复选框验证实现代码  # 变大  # 的是  # 是因为  # 是这样  # 都没  # 半天  # 很简单  # 这份  # 弹出  # 找了  # 使其  # 不支持  # 怎么做  # 如图  # 问了  # 首页  # 你不用  # 友情提示  # 肯定要  # 我就想 


相关文章: 阿里云网站制作公司,阿里云快速搭建网站好用吗?  制作农业网站的软件,比较好的农业网站推荐一下?  定制建站流程步骤详解:一站式方案设计与开发指南  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  广东企业建站网站优化与SEO营销核心策略指南  宝塔面板如何快速创建新站点?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  建站之星下载版如何获取与安装?  如何快速生成可下载的建站源码工具?  在线制作视频网站免费,都有哪些好的动漫网站?  如何续费美橙建站之星域名及服务?  如何在万网主机上快速搭建网站?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  C#如何使用XPathNavigator高效查询XML  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  IOS倒计时设置UIButton标题title的抖动问题  学校建站服务器如何选型才能满足性能需求?  香港服务器租用费用高吗?如何避免常见误区?  如何选择美橙互联多站合一建站方案?  网页设计网站制作软件,microsoft office哪个可以创建网页?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  SQL查询语句优化的实用方法总结  建站主机选哪家性价比最高?  测试制作网站有哪些,测试性取向的权威测试或者网站?  建站之星官网登录失败?如何快速解决?  MySQL查询结果复制到新表的方法(更新、插入)  建站之星如何快速更换网站模板?  北京制作网站的公司,北京铁路集团官方网站?  如何通过智能用户系统一键生成高效建站方案?  建站主机选购指南:核心配置与性价比推荐解析  如何快速搭建虚拟主机网站?新手必看指南  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  制作宣传网站的软件,小红书可以宣传网站吗?  如何构建满足综合性能需求的优质建站方案?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  制作网站的模板软件,网站怎么建设?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何在七牛云存储上搭建网站并设置自定义域名?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  南宁网站建设制作定制,南宁网站建设可以定制吗?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  如何快速搭建FTP站点实现文件共享?  如何用美橙互联一键搭建多站合一网站?  常州自助建站工具推荐:低成本搭建与模板选择技巧  网站制作员失业,怎样查看自己网站的注册者?  建站之星如何助力网站排名飙升?揭秘高效技巧  定制建站如何定义?其核心优势是什么? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。