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为搜索栏增加tag提示
Jun 22 Javascript
JQuery 文本框使用小结
May 22 Javascript
jQuery+css实现图片滚动效果(附源码)
Mar 18 Javascript
页面使用密码保护代码
Apr 10 Javascript
javaScript NameSpace 简单说明介绍
Jul 18 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
Apr 29 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
原生JS中slice()方法和splice()区别
Mar 06 Javascript
vue使用vue-cli快速创建工程
Jul 28 Javascript
js前端导出Excel的方法
Nov 01 Javascript
socket io与vue-cli的结合使用的示例代码
Nov 01 Javascript
基于Fixed定位的框选功能的实现代码
May 13 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
杏林同学录(三)
2006/10/09 PHP
很让人受教的 提高php代码质量36计
2012/09/05 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
php单链表实现代码分享
2016/07/04 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
js 页面执行时间计算代码
2009/03/04 Javascript
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python实现推箱子游戏
2020/03/25 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
python 如何快速复制序列
2020/09/07 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
html5清空画布方法(三种)
2017/10/16 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
优秀团队获奖感言
2014/02/19 职场文书
城管大队整治方案
2014/05/06 职场文书
学校清明节活动总结
2014/07/04 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP