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 相关文章推荐
javascript 自定义事件初探
Aug 21 Javascript
Vue.JS入门教程之自定义指令
Dec 08 Javascript
基于Vue实现页面切换左右滑动效果
Jun 29 Javascript
React Native 图片查看组件的方法
Mar 01 Javascript
angularjs结合html5实现拖拽功能
Jun 25 Javascript
对vue中v-if的常见使用方法详解
Sep 28 Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 Javascript
layer提示框添加多个按钮选择的实例
Sep 12 Javascript
node 标准输入流和输出流代码实例
Sep 19 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 10 Javascript
Vue实现简单计算器案例
Feb 25 Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 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
c#中的实现php中的preg_replace
2009/12/21 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
php页面防重复提交方法总结
2013/11/25 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
Python3监控疫情的完整代码
2020/02/20 Python
python实现用户名密码校验
2020/03/18 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
安全生产检查通报
2014/01/29 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
银行求职信范文
2019/05/13 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB