原生js+css 实现 material design 点击效果

最近想要在按钮上添加material design的点击效果,看了看muse-ui,单纯的想要这种效果,而要引入一些不必要的内容觉得不划算,然后自己动手造了个轮子。
项目地址:github

上传不了gif图只能用 JSFiddle了: JSFiddle效果

Import using script tag

<link rel="stylesheet" href="./ripple.css" charset="utf-8">
<script src="./ripple.js"></script>

使用

    <button class="md-button">文字</button>
    new Ripple({
            cName: 'md-button',
            color: 'red',
            time: '0.5s',
            MaxNum: 5
        })

只要在<button>内添加 class='className' 并且在 Ripple()内传入{cName: 'className'},便可以实现水波纹效果。<button> 的position将会被设置为relative

配置参数

Option Description
cName element的className,默认为 "md-button"
r 水波纹最小半径,不传此参数则为自动计算
color 水波纹颜色 默认为:rgba(0, 0, 0, 0.3)
time animation的时间 默认为:0.5s
MaxNum 水波纹的最大数量 默认为:5
center 水波纹的圆心。默认为:false
zIndex 设置z-index 默认为:null,当水波纹被覆盖时,可以使用此参数

实现思路

  1. 获取指定class 的element,并添加点击事件监听
  2. 为每一个element创建一个子元素<div class='wrapper'>.用来存放<span>
  3. element点击时 创建animation需要的<span>、添加动画样式、添加 animationend 事件监听,在动画结束后移除 相关样式。
  4. 多次点击时,创建多个<span>用来实现多个水波纹,并且对<span>重复使用。
  5. 当最后一个动画结束时,并且鼠标从element移除时,删除多个<span>

lupin
单身狗日记

全栈还是全干

124 声望
1 粉丝
0 条评论
推荐阅读
还为重复安装开发环境而烦吗? 这或许是更好的解决方案 —— docker
工欲善其事必先利其器 开始进行web开发之前,都需要搭建好基本的开发环境.个人用到的有nginx、redis、mysql、node.js. 搭建环境不同的方式 使用apt(ubuntu)、brew(mac os)一个个安装 脚本: LNMP一键安装包 源码编...

苍穹青空2阅读 1.6k

ESlint + Stylelint + VSCode自动格式化代码(2023)
安装插件 ESLint,然后 File -&gt; Preference-&gt; Settings(如果装了中文插件包应该是 文件 -&gt; 选项 -&gt; 设置),搜索 eslint,点击 Edit in setting.json

谭光志34阅读 20.8k评论 9

安全地在前后端之间传输数据 - 「3」真的安全吗?
在「2」注册和登录示例中,我们通过非对称加密算法实现了浏览器和 Web 服务器之间的安全传输。看起来一切都很美好,但是危险就在哪里,有些人发现了,有些人嗅到了,更多人却浑然不知。就像是给门上了把好锁,还...

边城32阅读 7.3k评论 5

封面图
涨姿势了,有意思的气泡 Loading 效果
今日,群友提问,如何实现这么一个 Loading 效果:这个确实有点意思,但是这是 CSS 能够完成的?没错,这个效果中的核心气泡效果,其实借助 CSS 中的滤镜,能够比较轻松的实现,就是所需的元素可能多点。参考我们...

chokcoco24阅读 2.3k评论 3

你可能不需要JS!CSS实现一个计时器
CSS现在可不仅仅只是改一个颜色这么简单,还可以做很多交互,比如做一个功能齐全的计时器?样式上并不复杂,主要是几个交互的地方数字时钟的变化开始、暂停操作重置操作如何仅使用 CSS 来实现这样的功能呢?一起...

XboxYan25阅读 1.7k评论 1

封面图
在前端使用 JS 进行分类汇总
最近遇到一些同学在问 JS 中进行数据统计的问题。虽然数据统计一般会在数据库中进行,但是后端遇到需要使用程序来进行统计的情况也非常多。.NET 就为了对内存数据和数据库数据进行统一地数据处理,发明了 LINQ (L...

边城17阅读 2k

封面图
过滤/筛选树节点
又是树,是我跟树杠上了吗?—— 不,是树的问题太多了!🔗 相关文章推荐:使用递归遍历并转换树形数据(以 TypeScript 为例)从列表生成树 (JavaScript/TypeScript) 过滤和筛选是一个意思,都是 filter。对于列表来...

边城18阅读 7.9k评论 3

封面图

全栈还是全干

124 声望
1 粉丝
宣传栏