美文网首页
实现按钮涟漪效果

实现按钮涟漪效果

作者: Carlmac | 来源:发表于2021-05-17 15:40 被阅读0次

看到越来越多的App都会在点击的时候呈现一个涟漪的效果,好奇是怎么实现的。

效果

自己想了几个方案,发现都不太好实现。搜集了一些资料之后发现其实并不难,甚至也不需要jQuery。

先讲讲大体思路:

1,涟漪由按钮内的子元素去做,这个子元素脱离文档流,故不改变按钮内容的布局

2,点击按钮时,把点击坐标记录下来,作为涟漪的圆心

3,创建涟漪子元素,设置好圆心

4,把它添加到按钮里面去,它被渲染进DOM之后就会播放CSS动画

5,设置 timeout,在动画时长后把涟漪从按钮里删除

代码:

HTML

<div class="btn">
  <p>Button</p>
</div>

CSS

.btn {
  width: 100px;
  height: 50px;
  background-color: green;
  border-radius: 10px;
  position: relative;  /* 必须 */
  overflow: hidden;    /* 必须 */
}

.btn > p {
  text-align: center;
}

.btn > span {
  position: absolute;  /* 必须 */
  transform: translate(-50%, -50%);  /* 必须 */
  background: white;
  border-radius: 50%;
  animation: .75s ripple;  /* 必须 */
}

@keyframes ripple {
  from {
    width: 0px;
    height: 0px;
    opacity: .5;
  }
  to {
    width: 200px;
    height: 200px;
    opacity: 0;
  }
}

JS

const btn = document.querySelector('.btn');

btn.addEventListener('mousedown', function(e){
  const left = e.clientX - e.currentTarget.offsetLeft;
  const top = e.clientY - e.currentTarget.offsetTop;
  const rip = document.createElement('span');
  rip.style.left = left + 'px';
  rip.style.top = top + 'px';
  btn.appendChild(rip);
  setTimeout(()=>{rip.remove()}, 750);
})

源码:
https://jsbin.com/haxeyonuvo/1/edit?html,css,js,output

相关文章

  • 实现按钮涟漪效果

    看到越来越多的App都会在点击的时候呈现一个涟漪的效果,好奇是怎么实现的。 自己想了几个方案,发现都不太好实现。搜...

  • 单标签实现按钮涟漪效果

    主要通过更换 css 上的 animation 来实现涟漪效果。 但是大部分的实现方法会增加一个空白节点, 所以想...

  • android 按钮涟漪效果

    第一种:Material自带水波纹 通过如下代码设置波纹的背景: android:background="?and...

  • CSS 效果

    按钮背景渐变效果 利用边框画一个三角形状 提示消息 阴影效果 3D盒子 3D按钮效果 SVG 按钮效果 按钮涟漪效果

  • Material Design的按钮,涟漪效果

    写在前面:这是一篇菜鸟的学习笔记,记录效果实现过程,没有考虑安全、兼容、性等问题。供新手参考,也希望前辈们指点。 ...

  • android 按钮button添加涟漪效果

    有边界的涟漪效果 无边界的涟漪效果 如果控件已经使用了android:background属性,可以考虑在andr...

  • Android自定义View:RippleButton涟漪按钮

    初学Kotlin,自定义view,rippleButton涟漪效果的按钮 效果演示 # 这里只做简单分析,具体查看...

  • 轻项目 范例代码汇总

    (一)css常见样式1 代码 实现如下效果: 【参考】 实现如下按钮效果: 【参考】 实现如下表格:【参考】 实现...

  • Vue组件-多级互斥按钮的实现

    多级互斥按钮的实现 本案例自定义了一个按钮组件, 按钮主要提供了多级点击效果, 按钮组间的按钮是互斥关系. 实现功...

  • 自定义涟漪效果的按钮

    谈不上很好看 很好看, 但是需要的知识点还是挺多的, 希望能在自定义View上对你们有一点点帮助不多说了, 直接上...

网友评论

      本文标题:实现按钮涟漪效果

      本文链接:https://www.haomeiwen.com/subject/vjujjltx.html