首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

小手点击水波纹效果js

小手点击水波纹效果是一种常见的前端动画效果,用于增强用户界面的交互体验。以下是关于这种效果的基础概念、优势、类型、应用场景以及实现方法和可能遇到的问题及解决方案。

基础概念

水波纹效果通常是指当用户点击某个元素时,在该元素周围产生一个逐渐扩散并消失的波纹动画。这种效果可以模拟水波在平面上扩散的现象,给人一种视觉上的反馈。

优势

  1. 增强用户体验:通过视觉反馈让用户知道他们的点击操作已被系统识别。
  2. 美观:提升界面的整体美观度,使应用看起来更加现代和专业。
  3. 无障碍性:对于视力不佳的用户,这种效果可以帮助他们更好地感知交互。

类型

  1. 单一波纹:每次点击只产生一个波纹。
  2. 多重波纹:连续点击可以在同一位置产生多个重叠的波纹。
  3. 自定义形状:波纹不仅限于圆形,还可以是其他形状,如方形、星形等。

应用场景

  • 按钮点击:最常见的应用是在按钮上。
  • 卡片元素:在信息卡片或图片上点击时也可以使用。
  • 导航菜单:增强导航项的点击反馈。

实现方法(JavaScript + CSS)

以下是一个简单的实现示例:

HTML

代码语言:txt
复制
<button class="ripple-button">Click Me</button>

CSS

代码语言:txt
复制
.ripple-button {
  position: relative;
  overflow: hidden;
  padding: 10px 20px;
  border: none;
  background-color: #007bff;
  color: white;
  cursor: pointer;
}

.ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.7);
  transform: scale(0);
  animation: ripple-animation 0.6s linear;
}

@keyframes ripple-animation {
  to {
    transform: scale(4);
    opacity: 0;
  }
}

JavaScript

代码语言:txt
复制
document.querySelectorAll('.ripple-button').forEach(button => {
  button.addEventListener('click', function (e) {
    const circle = document.createElement('span');
    const diameter = Math.max(button.clientWidth, button.clientHeight);
    const radius = diameter / 2;

    circle.style.width = circle.style.height = `${diameter}px`;
    circle.style.left = `${e.clientX - button.offsetLeft - radius}px`;
    circle.style.top = `${e.clientY - button.offsetTop - radius}px`;
    circle.classList.add('ripple');

    const ripple = button.getElementsByClassName('ripple')[0];
    if (ripple) {
      ripple.remove();
    }
    button.appendChild(circle);
  });
});

可能遇到的问题及解决方案

  1. 波纹效果不显示
    • 原因:可能是CSS样式未正确应用或JavaScript事件未绑定。
    • 解决方案:检查CSS类是否正确添加,确保JavaScript代码无误并已正确加载。
  • 波纹动画卡顿
    • 原因:可能是页面性能问题或动画帧率过低。
    • 解决方案:优化页面其他元素的性能,减少重绘和回流,使用requestAnimationFrame来优化动画执行。
  • 波纹位置不准确
    • 原因:计算波纹位置的逻辑有误。
    • 解决方案:仔细检查JavaScript中位置计算的代码,确保使用正确的坐标参考。

通过以上方法,你可以有效地实现并调试小手点击水波纹效果,提升用户界面的交互体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android源码解析--Material Design之水波纹点击效果RippleEffect使用

https://blog.csdn.net/lyhhj/article/details/48505041 Android5.0已经出了好久了,但是目前市场上的App好像没有多少用5.0上面的一些效果...今天我们看一下RippleEffect水波纹点击效果,先上图: image.png 大家可以看到按钮或者布局点击的时候会有水波涟漪的效果,很不错,用到你的app上一定会很高大上的。...paint.setAlpha(rippleAlpha);    //设置透明度 this.setWillNotDraw(false);     //设置将不绘画 然后创建手势,因为我们的点击有可能为长点击...,越小,得到的水波涟漪效果越慢,也就是radiusMax /=1,这句代码。...当然我们的ListView的item点击也可以实现这样的效果,因为我们的RippleView中是支持Listview点击的 [java] view plaincopy /**       *

1.9K20
  • Android 水波纹效果的探究

    长按水波纹扩展效果 前言 水波纹效果从Android5.0就已经出来了,基本的使用相信大家都知道了,这里多谈一些相对深层次的使用: 1、基本使用 2、水波纹效果与布局绘制之间的问题 3、长按水波纹扩散效果...4、Button点击的水波纹效果 基本使用 系统自带水波纹实现方式 有界水波纹 android:background="?...在使用了以上的自定义有界水波纹点击效果后,使用[开发者选项 - 调试GPU过渡绘制]得到下面的视图 ?...adapter.openDetail(bean)}" android:padding="8dp"> Button点击的水波纹效果...参考资料 Ripple 水波纹效果 聊聊Android5.0中的水波纹效果 解决点击ripple水波纹无效的问题 UI之修改Button颜色保持默认点击效果

    2.4K20

    Android:RippleDrawable 水波纹涟漪效果

    二、RippleDrawable基本概念介绍 (1)、RippleDrawable RippleDrawable可以实现上面效果图中的水波纹效果,它是在API 21 中添加的,所以,低于21的版本中不可使用...没有指定mask ,并且也没有指定radius 时,会以控件宽高中的较大值为直径绘制水波纹,这样就必然会超出控件的范围,所以,这种效果也叫做 无界水波纹效果。...指定mask 后 ,id 为 mask 的item 中指定的drawable 可以限定水波纹的范围。 三、代码示例: (1)、xml 中定义 ripple 下列代码依次对应效果图中的前6个。...--无界水波纹效果,所谓无界,实际是以空间宽度或高度中的大值作为直径绘制一个园--> <TextView android:layout_width...--有界水波纹效果。

    2.7K20

    使用原生JS实现鼠标点击爱心效果 !!!

    使用原生JS,实现鼠标点击爱心效果 !!! 引言: 在很多时候我们都需要实现鼠标点击出现图案或者文字这样的效果,对于用户而言,这样的体验是很极致的。其实实现起来也很简单,下面一起来学习一下吧。...这样的效果很常用,在很多网页博客中都有使用 实现思路 首先我们需要获取到当前鼠标点击的位置 需要在当前位置生成一个标签 需要给标签添加随机的自定义内容 随机的文本颜色 添加文本的淡出效果 清除淡出的标签...js中直接操作动画帧的样式比较复杂,所以采用定时器实现相同的功能,将标签的top值逐渐减小,这样标签就会实现上升的效果 4....文字逐渐变淡效果 @keyframes remove { 100% { opacity: 0; } } 逐渐变淡的效果是通过css3动画来实现的很简单,动画是通过js来给元素绑定的...鼠标点击实例化标签,并在点击位置生成 body.addEventListener('click', function (e) { let x = e.pageX; let y = e.pageY

    4.9K30

    JS-制作网页特效——选项卡效果(水平,点击)

    //总结:这个样式的思维很重要,以前刚开始做,想的都是,怎么获取到自己点击的是哪一个li,然后给他以对应的div样式。后来发现难点是,怎么找到另外两个没有被点击的li和他们对应的div。...className了,而要改成style,上一行的className就要删掉 } //j循环的外边 this.className = "on";//this代指tapLi[i],当前所点击的...,给他添加类名 tapDiv[this.index].className = "";//this.index=tapLi[i].index,具体作用下边alert做调试得知,就是得到一个对应你点击的...这样,给当前被点击li对应的div空类名,去除掉j循环中添加在他身上的hide枷锁,他就得意重见天日了! //这里最后把className忘记了,害得我调试了半天。...--清爽js代码如下--> 1 2 window.onload = function() { 3

    3.5K90

    FLASH水波纹效果动画制作教程图文自编「建议收藏」

    ,进入场景中来, 二 在场景第一帧点击下,在点击软件中的文件—-导入 —–导入到舞台—,把刚才的你找好的风景图片导入进入点击确定,这个图片就自然到了场景中,首先图片大小要符合场景文档属性的默认要求,修改图片的大小尺寸...,如看不清,先临时把图层一眼睛关闭掉,就是把图层一小锁前面的眼睛点击下 看擦好后的效果 如图 擦好之后把图层一的眼睛打开,这时候需要放大你场景的倍数,在软件的右边点击小三角放大到400%, 这样放大后...高是10的矩形,画好后在点击下黑箭头工具,把矩形拉个弓形,弄好后,在复制多个弓形,把图片完全的覆盖好,还要过图片的高度,如图效果 做到这步后, 我们在图层三的时间轴100帧处,右键插入关键帧,在点100...帧,把遮罩的矩形条上边和图片的上端对齐, 如图下 放好位置后,在点击下面属性旁边的补间小三角——-改为形状补间, 在图层三处点击右键为遮罩层,就这样一个水波纹的动画就出炉了,其实在这里为了让大家学的快...,这个图片应该树木和水都应该有轻微的动,树木动和水动的原理是一样的,简单吧,这个大家可以学习参考,当然如果 你有好制作方法的教材也可以在编辑更好的效果出来,小妖编写教材纯属娱乐,高手莫笑哦, 看看我制作好的效果图吧

    1.4K10

    Android OpenGL ES 实现动态(水波纹)涟漪效果

    动态(水波纹)涟漪效果 1 水波纹效果原理 最近一个做视频滤镜的朋友,让我给他做一个动态水波纹效果,具体就是:点击屏幕上的某一位置,然后波纹以该位置为中心向周围扩散。...模拟物理世界中的水波纹 最后观察出,物理世界中水波纹的特点如上图所示,从水面的正上方往下看,在凹面上方观察到的是缩小效果,而在凸面上方观察到的是放大效果,然后整个水波纹效果就是放大和缩小效果的交叉排列...因此,我们得出结论,水波纹(涟漪)效果实际上就是一组组相互交替、幅度向外部逐渐减小的缩小放大效果组合。 本文将水波纹模型简化成一组放大和缩小效果随时间逐步向外部偏移。...水波纹效果原理如下图所示,我们以点击位置为中心,发生形变的区域是内圆和外圆之间的区域,以归一化时间变量 u_Time 大小为半径构建的圆(蓝色虚线)为边界,设定内侧是实现缩小效果的区域,外侧为实现放大效果的区域...2 水波纹效果实现 基于上节的原理分析,实现水波纹效果的主要原理就是实现一定区域内的缩小和放大效果,我们以平滑函数的输出值作为纹理采样坐标的偏移程度。

    2.3K20
    领券