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 $.ajax入门应用一
Nov 19 Javascript
捕获关闭窗口的脚本
Jan 10 Javascript
基于jquery的图片的切换(以数字的形式)
Feb 14 Javascript
javascript实现div的显示和隐藏的小例子
Jun 25 Javascript
JavaScript基础函数整理汇总
Jan 30 Javascript
JavaScript函数详解
Feb 27 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
Oct 23 Javascript
浅谈JavaScript中数组的增删改查
Jun 20 Javascript
JS常用知识点整理
Jan 21 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
Apr 30 Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 01 Javascript
javascript拖曳互换div的位置实现示例
Jun 28 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
flexigrid 参数说明
2010/11/23 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
基于python socketserver框架全面解析
2017/09/21 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python中安装easy_install的方法
2018/11/18 Python
python实现一组典型数据格式转换
2018/12/15 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
python 实现二维列表转置
2019/12/02 Python
大学生活学习的自我评价
2013/12/03 职场文书
澳大利亚商务邀请函
2014/01/17 职场文书
学校欢迎标语
2014/06/18 职场文书
婚前协议书范本两则
2014/10/16 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
写给老婆的保证书
2015/02/27 职场文书
实习班主任自我评价
2015/03/11 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
讲座新闻稿
2015/07/18 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书