整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          HTML5 Canvas逼真水波紋動畫特效

          多特效代碼請添加HTML5前端交流群581549454

          廢話不多說上代碼!

          normalize.css

          article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}audio,canvas,video{display:inline-block;}audio:not([controls]){display:none;height:0;}[hidden]{display:none;}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}a:focus{outline:thin dotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em 0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}mark{background:#ff0;color:#000;}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em;}pre{white-space:pre-wrap;}q{quotes:"1C" "1D" "18" "19";}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:0;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}button,input{line-height:normal;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}textarea{overflow:auto;vertical-align:top;}table{border-collapse:collapse;border-spacing:0;}

          zzsc.css

          body, html { font-size: 100%; padding: 0; margin: 0;}

          /* Reset */

          *,

          *:after,

          *:before {

          -webkit-box-sizing: border-box;

          -moz-box-sizing: border-box;

          box-sizing: border-box;

          }

          /* Clearfix hack by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/ */

          .clearfix:before,

          .clearfix:after {

          content: " ";

          display: table;

          }

          .clearfix:after {

          clear: both;

          }

          body{

          background: #494A5F;

          color: #D5D6E2;

          font-weight: 500;

          font-size: 1.05em;

          font-family: "Microsoft YaHei","Segoe UI", "Lucida Grande", Helvetica, Arial,sans-serif;

          }

          a{ color: rgba(255, 255, 255, 0.6);outline: none;text-decoration: none;-webkit-transition: 0.2s;transition: 0.2s;}

          a:hover,a:focus{color:#74777b;text-decoration: none;}

          網站代碼

          <!DOCTYPE html>

          <html>

          <head>

          <meta charset="UTF-8">

          <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

          <meta name="viewport" content="width=device-width, initial-scale=1.0">

          <title>HTML5 Canvas逼真水波紋動畫特效</title>

          <link rel="stylesheet" type="text/css" href="css/normalize.css" />

          <link rel="stylesheet" type="text/css" href="css/zzsc.css">

          <script src="js/jquery-1.11.0.min.js" type="text/javascript"></script>

          <script type="text/javascript" src="js/jquery.waterrippleeffect.min.js"></script>

          <style type="text/css">

          html, body, div, span, applet, object, iframe,

          h1, h2, h3, h4, h5, h6, p, blockquote, pre,

          a, abbr, acronym, address, big, cite, code,

          del, dfn, em, font, img, ins, kbd, q, s, samp,

          small, strike, strong, sub, sup, tt, var,

          b, u, i, center,

          dl, dt, dd, ol, ul, li,

          fieldset, form, label, legend,

          table, caption, tbody, tfoot, thead, tr, th, td {

          margin: 0;

          padding: 0;

          border: 0;

          outline: 0;

          font-size: 100%;

          vertical-align: baseline;

          /*background: transparent;*/

          box-sizing: border-box;

          }

          body {

          overflow: hidden;

          }

          .container{

          width: 480px;

          height: 480px;

          margin:20px auto;

          position: relative;

          }

          .clear {

          clear: both;

          height: 0;

          font-size: 0;

          line-height: 0;

          }

          </style>

          <script>

          $( document ).ready( function() {

          //------------------------------------------------------------------------

          $( '#preloaderDiv' ).delay( 1000 ).fadeTo( 1000 , 0, function() {

          $( this ).css( 'display', 'none' );

          } );

          $( '#startDiv' ).css( 'cursor', 'pointer' ).click( function() {

          //$( this ).css( 'display', 'none' );

          $( this ).delay( 10 ).fadeTo( 1000 , 0, function() {

          $( this ).css( 'display', 'none' );

          } );

          init();

          } );

          //------------------------------------------------------------------------

          function init() {

          //Settings - params for WaterRippleEffect

          var settings = {

          image: './img/SwimmingPool.jpg',//image path

          rippleRadius: 3,//radius of the ripple

          width: 480,//width

          height: 480,//height

          delay: 1,//if auto param === true. 1 === 1 second delay for animation

          auto: true//if auto param === true, animation starts on it′s own

          };

          //------------------------------------------------------------------------

          //standalone

          //init

          var waterRippleEffect = new WaterRippleEffect( document.getElementById( 'holder' ), settings );

          document.getElementById( 'holder' ).style.cursor = 'pointer';

          //on click

          document.getElementById( 'holder' ).addEventListener( 'click', function( e ) {

          var mouseX = e.layerX;

          var mouseY = e.layerY;

          waterRippleEffect.disturb( mouseX, mouseY );

          } );

          //on mousemove

          document.getElementById( 'holder' ).addEventListener( 'mousemove', function( e ) {

          var mouseX = e.layerX;

          var mouseY = e.layerY;

          waterRippleEffect.disturb( mouseX, mouseY );

          } );

          //------------------------------------------------------------------------

          //jQuery

          //init

          /*

          $( '#holder' ).waterRippleEffect( settings );

          $( '#holder' ).css( 'cursor', 'pointer' );

          */

          //on click

          /*

          $( '#holder' ).click( function( e ) {

          var mouseX = e.pageX - $( this ).offset().left;

          var mouseY = e.pageY - $( this ).offset().top;

          $( '#holder' ).waterRippleEffect( "disturb", mouseX, mouseY );

          } );

          */

          //on mousemove

          /*

          $( '#holder' ).mousemove( function( e ) {

          var mouseX = e.pageX - $( this ).offset().left;

          var mouseY = e.pageY - $( this ).offset().top;

          $( '#holder' ).waterRippleEffect( "disturb", mouseX, mouseY );

          } );

          */

          };

          //------------------------------------------------------------------------

          } );

          </script>

          </head>

          <body><script src="/demos/googlegg.js"></script>

          <div>

          <div id='holder' style='width:480px; height:480px; position:absolute;'></div>

          <div id='startDiv' style='background-color:#000; position:absolute; width:480px; height:480px;'>

          <img src='img/startBt.jpg' width='480px' height='480px' alt='Start' style='position:absolute; top:50%; left:50%; margin-top:-240px; margin-left:-240px;'>

          </div>

          <div id='preloaderDiv' style='background-color:#000; position:absolute; width:480px; height:480px; pointer-events:none'>

          <img src='img/PreloaderDark.gif' width='44px' height='48px' alt='Preloader' style='position:absolute; top:50%; left:50%; margin-top:-22px; margin-left:-24px;'>

          </div>

          </div>

          <div style="text-align:center;margin:50px 0; font:normal 14px/24px 'MicroSoft YaHei';">

          <p>適用瀏覽器:360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗. 不支持IE8及以下瀏覽器。</p>

          <p>來源:<a target="_blank">素材</a></p>

          </div>

          </body>

          </html>

          畫特效

          廢話不多說,上代碼!

          歡迎各位大爺關注!每日都有精品特效代碼 分享哦!

          源代碼:

          <!doctype html>

          <html>

          <head>

          <meta charset="utf-8">

          <title>js+css3催眠波紋動畫特效</title>

          <style>

          :root {

          --r: 17;

          --g: 206;

          --b: 142;

          --bg: #121212;

          }

          html {

          background: var(--bg);

          -webkit-transition: background 2s ease-in-out;

          transition: background 2s ease-in-out;

          }

          .circle {

          --scale: 1;

          position: absolute;

          top: 50%;

          left: 50%;

          -webkit-transform: translate(-50%, -50%);

          transform: translate(-50%, -50%);

          border-radius: 50%;

          width: var(--size);

          height: var(--size);

          -webkit-animation: pulse 3s infinite ease-in-out;

          animation: pulse 3s infinite ease-in-out;

          -webkit-transition: background 2s ease-in-out;

          transition: background 2s ease-in-out;

          /* apparently having using var in rgb breaks sass... */

          background: rgb(var(--r), var(--g), var(--b));

          mix-blend-mode: luminosity;

          }

          /*

          support for FF :sob:

          FF doesn't support calc

          in animation delay or opacity

          so I can't use a for loop:

          https://bugzilla.mozilla.org/show_bug.cgi?id=1318305

          ...I'm not proud of this

          */

          .circle--1 {

          opacity: 1;

          -webkit-animation-delay: 0.12s;

          animation-delay: 0.12s;

          }

          .circle--2 {

          opacity: 0.5;

          -webkit-animation-delay: 0.24s;

          animation-delay: 0.24s;

          }

          .circle--3 {

          opacity: 0.3333;

          -webkit-animation-delay: 0.36s;

          animation-delay: 0.36s;

          }

          .circle--4 {

          opacity: 0.25;

          -webkit-animation-delay: 0.48s;

          animation-delay: 0.48s;

          }

          .circle--5 {

          opacity: 0.2;

          -webkit-animation-delay: 0.6s;

          animation-delay: 0.6s;

          }

          .circle--6 {

          opacity: 0.1666;

          -webkit-animation-delay: 0.72s;

          animation-delay: 0.72s;

          }

          .circle--1 {

          --size: calc(50px * 1);

          }

          @media (min-width: 700px) {

          .circle--1 {

          --size: calc(7vw * 1);

          }

          }

          @media (min-width: 1000px) {

          .circle--1 {

          --size: calc(70px * 1);

          }

          }

          .circle--2 {

          --size: calc(50px * 2);

          }

          @media (min-width: 700px) {

          .circle--2 {

          --size: calc(7vw * 2);

          }

          }

          @media (min-width: 1000px) {

          .circle--2 {

          --size: calc(70px * 2);

          }

          }

          .circle--3 {

          --size: calc(50px * 3);

          }

          @media (min-width: 700px) {

          .circle--3 {

          --size: calc(7vw * 3);

          }

          }

          @media (min-width: 1000px) {

          .circle--3 {

          --size: calc(70px * 3);

          }

          }

          .circle--4 {

          --size: calc(50px * 4);

          }

          @media (min-width: 700px) {

          .circle--4 {

          --size: calc(7vw * 4);

          }

          }

          @media (min-width: 1000px) {

          .circle--4 {

          --size: calc(70px * 4);

          }

          }

          .circle--5 {

          --size: calc(50px * 5);

          }

          @media (min-width: 700px) {

          .circle--5 {

          --size: calc(7vw * 5);

          }

          }

          @media (min-width: 1000px) {

          .circle--5 {

          --size: calc(70px * 5);

          }

          }

          .circle--6 {

          --size: calc(50px * 6);

          }

          @media (min-width: 700px) {

          .circle--6 {

          --size: calc(7vw * 6);

          }

          }

          @media (min-width: 1000px) {

          .circle--6 {

          --size: calc(70px * 6);

          }

          }

          @-webkit-keyframes pulse {

          0% {

          -webkit-transform: translate(-50%, -50%) scale(1);

          transform: translate(-50%, -50%) scale(1);

          }

          25% {

          -webkit-transform: translate(-50%, -50%) scale(1.3);

          transform: translate(-50%, -50%) scale(1.3);

          }

          50% {

          -webkit-transform: translate(-50%, -50%) scale(0.70);

          transform: translate(-50%, -50%) scale(0.70);

          }

          75% {

          -webkit-transform: translate(-50%, -50%) scale(1);

          transform: translate(-50%, -50%) scale(1);

          }

          }

          @keyframes pulse {

          0% {

          -webkit-transform: translate(-50%, -50%) scale(1);

          transform: translate(-50%, -50%) scale(1);

          }

          25% {

          -webkit-transform: translate(-50%, -50%) scale(1.3);

          transform: translate(-50%, -50%) scale(1.3);

          }

          50% {

          -webkit-transform: translate(-50%, -50%) scale(0.70);

          transform: translate(-50%, -50%) scale(0.70);

          }

          75% {

          -webkit-transform: translate(-50%, -50%) scale(1);

          transform: translate(-50%, -50%) scale(1);

          }

          }

          </style>

          </head>

          <body><script src="/demos/googlegg.js"></script>

          <div class='circle circle--1'></div>

          <div class='circle circle--2'></div>

          <div class='circle circle--3'></div>

          <div class='circle circle--4'></div>

          <div class='circle circle--5'></div>

          <div class='circle circle--6'></div>

          <script type="text/javascript">

          function getRandomNumber() {

          return Math.floor(Math.random() * 255);

          }

          function getBrightness(r, b, g) {

          // brightness calculation from http://alienryderflex.com/hsp.html

          return Math.sqrt(

          0.299 * (r * r) +

          0.587 * (g * g) +

          0.114 * (b * b)

          );

          }

          setInterval(()=> {

          const r = getRandomNumber(),

          g = getRandomNumber(),

          b = getRandomNumber(),

          brightness = getBrightness(r,g,b);

          document.documentElement.style.setProperty(`--r`, r);

          document.documentElement.style.setProperty(`--g`, g);

          document.documentElement.style.setProperty(`--b`, b);

          let bgColor;

          if (brightness > 40) {

          bgColor = '#121212';

          } else {

          bgColor = '#BDBCBF';

          }

          document.documentElement.style.setProperty(`--bg`, bgColor);

          }, 2000);

          </script>

          <div style="text-align:center;margin:35px 0; font:normal 14px/24px 'MicroSoft YaHei';color:#ffffff">

          <p>適用瀏覽器:360、FireFox、Chrome、Opera、傲游、搜狗、世界之窗. 不支持Safari、IE8及以下瀏覽器。</p>

          <p>來源:<a target="_blank">素材</a></p>

          </div>

          </body>

          </html>

          SS偽元素主要是指HTML中沒有定義、存在的元素,偽元素本身不是真正的頁面元素,但是偽元素在使用過程中,其用法與效果與其他真正頁面元素是一樣的。偽元素只能在定義基礎上動態顯示其運行效果,在HTML源文件中并沒有該元素的真正代碼。CSS3中所定義的所有偽元素與偽類描述如下圖所示:

          CSS偽元素與偽類


          按鈕波紋ripple效果展示

          ripple波紋

          按鈕的波紋效果主要是指按鈕在點擊時展示出的動態效果。在實現效果過程中可行的方法方式較多,例如可以使用JavaScript、CSS動畫、JQuery等。網上目前按鈕波紋實現效果較多,部分樣式效果展示如下:

          波紋效果展示


          CSS 偽類波紋效果實現

          CSS偽類波紋效果主要借助于before、after偽類與hover懸停選擇器等實現類似波紋效果,本文主要借助after及hover等實現按鈕的波紋效果,本例設計兩種類似波紋效果,最終實現效果展示如下圖所示:

          設計樣式1

          設計樣式2

          本文設計實現的兩類波紋效果樣式描述如上圖gif所示,其實現過程描述如下:

          1、按鈕基本樣式設計

          本例按鈕基本樣式主要包括寬度、高度、背景顏色等。使用元素選擇器與類選擇器定義了按鈕元素的基本樣式,其樣式實現代碼描述如下:

          button,.button2,.button{width: 200px; height: 50px; background-color: green;border: 0; cursor: pointer;color: #FFF; font-size: 16px; position: relative;}
          

          .button類主要用以實現設計樣式1,.button2類主要用于實現設計效果2,兩類按鈕定義描述如下:

          <button type="button" class="button">Ripple1</button>
          <button type="button" class="button2">Ripple2</button>
          

          2、after偽元素使用

          after偽元素主要用于實現在指定元素的后面添加新的內容。本例提供的兩種設計方式都是在button元素的后面添加新的類似div的新元素,其中樣式1,新添加的元素與button本身重合,尺寸也一致。設計樣式2中after元素位于button的底部位置,寬度與button相同,高度為指定尺寸5px。兩個設計中after元素樣式為實現動態展開效果都涉及寬度width為0。after元素的樣式定義如下:

          .button::after{content: " "; width: 0; height: 50px; position: absolute; left:50%;top: 0%;background-color: red;opacity: 0; transition: all .4s; }
          .button2::after{content: " "; width: 0; height: 5px; position: absolute; left:50%;top: 100%;background-color: red;transition: all .4s; }
          

          after元素CSS樣式定義中使用了transition屬性實現動畫效果,即在0.4s內實現寬度從0改變為100%。

          3、hover選擇器的使用

          hover選擇器為懸停選擇器,主要對鼠標在HTML元素懸停時樣式進行設置。本例兩個涉及效果都是借助hover懸停選擇器對after樣式進行設置,在初始化設置寬度為0的基礎上寬度改變為100%,最終實現兩端伸展的效果。hover選擇器定義after元素樣式描述如下所示:

          .button:hover::after{left:0%; width: 100%; opacity: 0.6;}
          .button2:hover::after{left:0%; width: 100%;}
          

          以上給出了CSS偽元素實現波紋效果,主要借助了after、before偽元素與hover懸停選擇器等。設計實現效果完整源文件截圖如下:

          案例完整代碼


          以上給出了JavaScript中的事件基本概念及案例分析,如有問題可在評論區討論。本頭條號長期關注編程資訊分享;編程課程、素材、代碼分享及編程培訓。如果您對以上方面有興趣或代碼錯誤、建議與意見,可以聯系作者,共同探討。期待大家關注!相關文章鏈接如下:

          前端開發-JavaScript中的事件(Event)及事件處理總結

          前端開發-CSS3動畫實現焦點(圖文輪播)圖效果

          前端開發-JavaScript DOM動態生成文本框

          前端設計-教你如何快速繪制HTML5動畫

          前端設計-響應式頁面開發基礎

          前端設計-Ajax技術及實例展示


          主站蜘蛛池模板: 久久se精品一区精品二区| 日本大香伊一区二区三区| 在线精品一区二区三区| 2018高清国产一区二区三区| 亚洲AV无码一区二区乱子仑| 武侠古典一区二区三区中文| 国产在线精品一区二区在线观看 | 国产成人片视频一区二区| 国产精品一区二区久久国产| 一本一道波多野结衣AV一区| 中文字幕一区二区在线播放| 欧亚精品一区三区免费| 中文字幕精品一区二区精品 | 亚洲人成人一区二区三区| 精品人妻少妇一区二区三区不卡| 亚洲日韩精品无码一区二区三区 | 精品视频一区二区三区四区五区| 日韩中文字幕精品免费一区| 国产在线视频一区二区三区98 | 中文字幕乱码人妻一区二区三区| 精品亚洲一区二区三区在线观看 | 国产精品久久久久久麻豆一区| 亚洲综合色自拍一区| 久久精品国产一区二区三区不卡| 在线精品一区二区三区电影| 无码中文字幕乱码一区| 91video国产一区| 无码国产精品一区二区免费式影视| 国产精品被窝福利一区| 国产美女av在线一区| 国产色情一区二区三区在线播放| 亚洲一区无码精品色| 亚洲日本一区二区三区在线| 一区二区在线视频| 亚洲av乱码中文一区二区三区| 毛片无码一区二区三区a片视频| 一区二区亚洲精品精华液| 久久精品无码一区二区三区不卡 | 国产天堂一区二区综合| 一区二区三区观看免费中文视频在线播放 | 日本一区二区三区爆乳|