jQuery实现点击水纹波动动画


Posted in Javascript onApril 10, 2016

jQuery点击水纹波动动画原理:

    1.在需要实现水波纹效果的标签中添加<XXX class="ripple-wrapper"></XXX>
    2.代码会定位 鼠标相对 与 标签的位置,以鼠标点为圆心画圆
    3.圆的半径 可以自定义(默认为标签的最大宽或高度)
    4.圆点颜色,和动画时间等可以自行修改内部代码,或直接 调用 $().css({})方法 进行覆盖

ripple-wrapper.js

$(function(){
  $(".ripple-wrapper").css(
    {
  "position": " absolute",
  "top": " 0",
  "left": " 0",
  "z-index": " 1",
  "width": " 100%",
  "height": " 100%",
  "overflow": " hidden",
  "border-radius": " inherit",
  "pointer-events": " none"
  });
    $(".ripple-wrapper").parent().click(function(e){
     var ripple_obj=$(this).find(".ripple-wrapper");
     if(ripple_obj.find("div").length){ripple_obj.find("div").remove();}
     ripple_obj.prepend("<div></div>");
     var ripple_div=ripple_obj.find("div");
     ripple_div.css(
       {
  "display": " block",
  "background": " rgba(255, 255, 255, 0.7)",
  "border-radius": " 50%",
  "position": " absolute",
  "-webkit-transform": " scale(0)",
  "transform": " scale(0)",
  "opacity": " 1",
  "transition": " all 0.7s",
  "-webkit-transition": " all 0.7s",
  "-moz-transition": " all 0.7s",
  "-o-transition": " all 0.7s",
  "z-index": " 1",
  "overflow": " hidden",
  "pointer-events": " none"
    });
     var R= parseInt(ripple_obj.outerWidth());/*默认半径为ripple-wrapper宽*/
     if(parseInt(ripple_obj.outerWidth())<parseInt(ripple_obj.outerHeight())){
         R= parseInt(ripple_obj.outerHeight());/*如果高度大于宽半径为ripp,le-wrapper高*/
     }
      ripple_div.css({"width":(R*2)+"px","height":(R*2)+"px","top": (e.pageY -ripple_obj.offset().top - R)+'px', "left": ( e.pageX -ripple_obj.offset().left -R)+'px',"transform":"scale(1)", "-webkit-transform":"scale(1)","opacity":"0"});;
    }); 
    
    });

HTML

<!DOCTYPE html>
<html>
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.4.min.js"></script>
  <script src="ripple-wrapper.js"></script> 
  <style>
    .ck {
      cursor: pointer;
      display: block;
      padding: 1em;
      text-decoration: none;
      width: 200px;
      height: 20px;
      position: relative;
      overflow: hidden; 
      color: #fff;
    }
  </style>
</head>
 
<body >
  <div class="ck" style="background: #5f5f5f">
    点一下
    <div class="ripple-wrapper"></div>
  </div> 
</body>
 
</html>

演示图

jQuery实现点击水纹波动动画

未封装代码

<!DOCTYPE html>
<html>
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.4.min.js"></script>
  <style>
    .ck {
      background: #ffab91;
   
      display: block;
      padding: 1em;
      text-decoration: none;
      width: 200px;
      height: 20px;
      position: relative;
      overflow: hidden;
    }
     
    .ck .bd {
      background: rgba(0, 0, 0,0.8);
      border-radius: 50%;
      width: 0px;
      height: 0px;
      position: absolute;
       -webkit-transform: scale(0);
       transform: scale(0);
       opacity: 1;
    }
     
    .dh {
      animation: ldm 0.8s ;
      -moz-animation: ldm 0.8s ;
      -o-animation: ldm 0.8s ;
      -webkit-animation: ldm 0.8s  ;
    }
     
    @-webkit-keyframes ldm {
      100% {
        -webkit-transform: scale(1);
        opacity: 0
      }
    }
     
    @keyframes ldm {
       100% {
        -webkit-transform: scale(1);
        opacity: 0
      }
    }
  </style>
</head>
 
<body style=" background: #aaab91;">
  <div class="ck">
    <span class="bd"></span> adasdsd
  </div>
  <script>
    $(".ck").click(function(e){
       $(this).find(".bd").removeClass("dh");
      var R=6;
      R= parseInt($(this).outerWidth());
      if(parseInt($(this).outerWidth())<parseInt($(this).outerHeight())){
        R= parseInt($(this).outerHeight());
      }
      $(this).find(".bd").css({"width":(R*2)+"px","height":(R*2)+"px"});
    $(this).find(".bd").css({"left":(e.pageX-$(this).position().left-R)+"px","top":(e.pageY-$(this).position().top-R)+"px" });
    // $(this).find(".bd").css({"left":(e.pageX-$(this).position().left-R/2 )+"px","top":(e.pageY-$(this).position().top-R/2 )+"px" });
    $(this).find(".bd").addClass("dh");
    });
  </script>
</body>
 
</html>
Javascript 相关文章推荐
做好七件事帮你提升jQuery的性能
Feb 06 Javascript
jQuery中triggerHandler()方法用法实例
Jan 19 Javascript
angularJS中router的使用指南
Feb 09 Javascript
深入浅析knockout源码分析之订阅
Jul 12 Javascript
JavaScript订单操作小程序完整版
Jun 23 Javascript
使用SVG基本操作API的实例讲解
Sep 14 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
Dec 27 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
vue项目中公用footer组件底部位置的适配问题
May 10 Javascript
JavaScript中BOM对象原理与用法分析
Jul 09 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 Javascript
详解vue 中 scoped 样式作用域的规则
Sep 14 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
Apr 08 #Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
Apr 08 #Javascript
JavaScript代码实现左右上下自动晃动自动移动
Apr 08 #Javascript
JS表单验证的代码(常用)
Apr 08 #Javascript
JavaScript事件代理和委托详解
Apr 08 #Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
Apr 07 #Javascript
关于cookie的初识和运用(js和jq)
Apr 07 #Javascript
You might like
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
json数据的列循环示例
2013/09/06 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
python下MySQLdb用法实例分析
2015/06/08 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
经典c++面试题六
2012/01/18 面试题
银行优秀员工事迹
2014/02/06 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
宣传标语大全
2014/07/01 职场文书
技术入股合作协议书
2014/10/07 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
企业愿景口号
2015/12/25 职场文书
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB