整理文档,搜刮出一个原生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小时内与您取得联系。