jQuery實(shí)現(xiàn)點(diǎn)擊水紋波動動畫

字號:


    今天要為大家紹一款由jquery實(shí)現(xiàn)的鼠標(biāo)單擊出現(xiàn)水波特效。用鼠標(biāo)點(diǎn)擊頁面,你可以看到頁面不斷出面水波紋效果。然后水波紋漸漸消失。效果非常不錯(cuò)
    jQuery點(diǎn)擊水紋波動動畫原理:
    1.在需要實(shí)現(xiàn)水波紋效果的標(biāo)簽中添加<XXX></XXX>
    2.代碼會定位 鼠標(biāo)相對 與 標(biāo)簽的位置,以鼠標(biāo)點(diǎn)為圓心畫圓
    3.圓的半徑 可以自定義(默認(rèn)為標(biāo)簽的最大寬或高度)
    4.圓點(diǎn)顏色,和動畫時(shí)間等可以自行修改內(nèi)部代碼,或直接 調(diào)用 $().css({})方法 進(jìn)行覆蓋
    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());/*默認(rèn)半徑為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>
        點(diǎn)一下
        <div></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>
      <div>
        <span></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>