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>
演示图
未封装代码
<!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>
本文地址:https://www.stayed.cn/item/21515
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我