四种方式实现波浪效果(CSS效果)

一)第一种方法

(1)HTML结构

1 <body> 
2    <div class="animate wave">
3     <div class="w1"></div>
4     <div class="w2"></div>
5     <div class="w3"></div>
6     <div class="w4"></div>
7    </div>
8 </body>

(2)CSS样式

 1 <style type="text/css">
 2     html{
 3         font-size: 20px;
 4     }
 5       body{
 6           background:#444;
 7       }
 8     @-webkit-keyframes opac{
 9         from {
10             opacity: 1;
11             0;
12             height:0;
13             top:50%;
14             left:50%;
15         }
16         to {
17             opacity : 0;
18             100%;
19             height:100%;
20             top:0;
21             left:0;
22         }
23     }
24     .animate .w2{
25         -webkit-animation-delay:1s;
26     }
27     .animate .w3{
28         -webkit-animation-delay:2s;
29     }
30     .animate .w4{
31         -webkit-animation-delay:3s;
32     }
33     .wave{
34          22.7rem;
35         height: 22.7rem;
36         position: absolute;
37         top: 0;
38         left: 0;
39         right: 0;
40         margin: 0 auto;
41     }
42     .wave *{
43         border:1px solid #fff;
44         position:absolute;
45         border-radius:50%;
46         -webkit-animation:opac 4s infinite;
47     }
48     </style>

(二)第二种方法

     (1)HTML结构

1 <body>
2 <div class="circle">
3     <div class="c1"></div>
4     <div class="c2"></div>
5     <div class="c3"></div>
6 </div>
7 </body>

  (2)CSS样式

 1  <style>
 2         body{
 3             background:gold;
 4         }
 5  
 6         .circle {
 7             position:absolute;
 8             left:0;
 9             top:0;
10             right: 0;
11             margin: 0 auto;
12             90px;
13             height:90px
14  
15         }
16         .circle div {
17             position:absolute;
18             top:50%;
19             left:50%;
20             background:#fff;
21             90px;
22             height:90px;
23             margin-left:-45px;
24             margin-top:-45px;
25             opacity:1;
26             border-radius:90px;
27             animation: 1.2s linear infinite;
28             -webkit-animation: 1.2s linear infinite;
29             -ms--webkit-animation: 1.2s linear infinite;
30             -moz--webkit-animation: 1.2s linear infinite;
31             -o--webkit-animation: 1.2s linear infinite;
 1  
 2            /* 此部分是上面动画的分开表示方法,推荐使用简写的方式-webkit-animation-duration:1.2s;
 3             -webkit-animation-timing-function:linear;
 4             -webkit-animation-iteration-count:infinite;
 5             -ms-animation-duration:1.2s;
 6             -ms-animation-timing-function:linear;
 7             -ms-animation-iteration-count:infinite;
 8             -moz-animation-duration:1.2s;
 9             -moz-animation-timing-function:linear;
10             -moz-animation-iteration-count:infinite;
11             -o-animation-duration:1.2s;
12             -o-animation-timing-function:linear;
13             -o-animation-iteration-count:infinite;
14             animation-duration:1.2s;
15             animation-timing-function:linear;
16             animation-iteration-count:infinite;*/
  1  
  2         }
  3         .circle div.c1 {
  4             20px;
  5             height:20px;
  6             margin-left:-10px;
  7             margin-top:-10px;
  8             opacity:1;
  9             border-radius:90px
 10         }
 11         .circle div.c2 {
 12             -webkit-animation-name:c2;
 13             -webkit-animation-delay:.6s;
 14             -ms-animation-name:c2;
 15             -ms-animation-delay:.6s;
 16             -moz-animation-name:c2;
 17             -moz-animation-delay:.6s;
 18             -o-animation-name:c2;
 19             -o-animation-delay:.6s;
 20             animation-name:c2;  
 21             animation-delay:.6s; 
 22         }
 23         .circle div.c3 {
 24             -webkit-animation-name:c2;
 25             -webkit-animation-delay:1.2s;
 26             -ms-animation-name:c2;
 27             -ms-animation-delay:1.2s;
 28             -moz-animation-name:c2;
 29             -moz-animation-delay:1.2s;
 30             -o-animation-name:c2;
 31             -o-animation-delay:1.2s;
 32             animation-name:c2; 
 33             animation-delay:1.2s;
 34         }
 35         @-webkit-keyframes c2 {
 36             0% {
 37                 -webkit-transform:scale(.222);
 38                 -ms-transform:scale(.222);
 39                 -moz-transform:scale(.222);
 40                 -o-transform:scale(.222);
 41                 transform:scale(.222);
 42                 opacity:1
 43             }
 44             50% {
 45                 -webkit-transform:scale(.622);
 46                 -ms-transform:scale(.622);
 47                 -moz-transform:scale(.622);
 48                 -o-transform:scale(.622);
 49                 transform:scale(.622);
 50                 opacity:.4
 51             }
 52             98% {
 53                 -webkit-transform:scale(1);
 54                 -ms-transform:scale(1);
 55                 -moz-transform:scale(1);
 56                 -o-transform:scale(1);
 57                 transform:scale(1);
 58                 opacity:.2
 59             }
 60             100% {
 61                 opacity:0
 62             }
 63         }
 64         @-ms-keyframes c2 {
 65             0% {
 66                 -webkit-transform:scale(.222);
 67                 -ms-transform:scale(.222);
 68                 -moz-transform:scale(.222);
 69                 -o-transform:scale(.222);
 70                 transform:scale(.222);
 71                 opacity:1
 72             }
 73             50% {
 74                 -webkit-transform:scale(.622);
 75                 -ms-transform:scale(.622);
 76                 -moz-transform:scale(.622);
 77                 -o-transform:scale(.622);
 78                 transform:scale(.622);
 79                 opacity:.4
 80             }
 81             98% {
 82                 -webkit-transform:scale(1);
 83                 -ms-transform:scale(1);
 84                 -moz-transform:scale(1);
 85                 -o-transform:scale(1);
 86                 transform:scale(1);
 87                 opacity:.2
 88             }
 89             100% {
 90                 opacity:0
 91             }
 92         }
 93         @-moz-keyframes c2 {
 94             0% {
 95                 -webkit-transform:scale(.222);
 96                 -ms-transform:scale(.222);
 97                 -moz-transform:scale(.222);
 98                 -o-transform:scale(.222);
 99                 transform:scale(.222);
100                 opacity:1
101             }
102             50% {
103                 -webkit-transform:scale(.622);
104                 -ms-transform:scale(.622);
105                 -moz-transform:scale(.622);
106                 -o-transform:scale(.622);
107                 transform:scale(.622);
108                 opacity:.4
109             }
110             98% {
111                 -webkit-transform:scale(1);
112                 -ms-transform:scale(1);
113                 -moz-transform:scale(1);
114                 -o-transform:scale(1);
115                 transform:scale(1);
116                 opacity:.2
117             }
118             100% {
119                 opacity:0
120             }
121         }
122         @-o-keyframes c2 {
123             0% {
124                 -webkit-transform:scale(.222);
125                 -ms-transform:scale(.222);
126                 -moz-transform:scale(.222);
127                 -o-transform:scale(.222);
128                 transform:scale(.222);
129                 opacity:1
130             }
131             50% {
132                 -webkit-transform:scale(.622);
133                 -ms-transform:scale(.622);
134                 -moz-transform:scale(.622);
135                 -o-transform:scale(.622);
136                 transform:scale(.622);
137                 opacity:.4
138             }
139             98% {
140                 -webkit-transform:scale(1);
141                 -ms-transform:scale(1);
142                 -moz-transform:scale(1);
143                 -o-transform:scale(1);
144                 transform:scale(1);
145                 opacity:.2
146             }
147             100% {
148                 opacity:0
149             }
150         }
151         @keyframes c2 {
152             0% {
153                 -webkit-transform:scale(.222);
154                 -ms-transform:scale(.222);
155                 -moz-transform:scale(.222);
156                 -o-transform:scale(.222);
157                 transform:scale(.222);
158                 opacity:1
159             }
160             50% {
161                 -webkit-transform:scale(.622);
162                 -ms-transform:scale(.622);
163                 -moz-transform:scale(.622);
164                 -o-transform:scale(.622);
165                 transform:scale(.622);
166                 opacity:.4
167             }
168             98% {
169                 -webkit-transform:scale(1);
170                 -ms-transform:scale(1);
171                 -moz-transform:scale(1);
172                 -o-transform:scale(1);
173                 transform:scale(1);
174                 opacity:.2
175             }
176             100% {
177                 opacity:0
178             }
179         }
180     </style>

(三)第三种方法

  (1)HTML结构

1 <body>
2 <div class="container">
3   <div class="dot"></div>
4   <div class="wave"></div>
5 </div>
6 </body>

  (2)CSS样式

 1 <style type="text/css">
 2   .container{
 3     position: relative;
 4      100px;
 5     height: 100px;
 6     margin: 0 auto;
 7   }
 8   .dot{
 9     position: absolute;
10     left: 15px;
11     top:15px;
12     6px;
13     height: 6px;
14     border-radius: 50%;
15   }
16   .wave{
17     position: absolute;
18     left: 2px;
19     top: 2px;
20      24px;
21     height: 24px;
22     border: 6px solid red;
23     border-radius: 50%; 
24     opacity: 0;
25     animation: waveCircle 3s ease-out;
26     animation-iteration-count: infinite;
27   }
28   @-webkit-keyframes waveCircle {
29     0%{
30       transform: scale(0);
31       opacity: 0;
32     }
33     10%{
34       transform: scale(0.1);
35       opacity: 0.1;
36     }
37     20%{
38       transform: scale(0.2);
39       opacity: 0.2;
40     }
41     30%{
42       transform: scale(0.3);
43       opacity: 0.3;
44     }
45     75%{
46       transform: scale(0.6);
47       opacity: 0.5;
48     }
49     100%{
50       transform: scale(1);
51       opacity: 0;
52     }
53   }
54   </style>

(四)第四种方法

  (1)HTML结构

1 <body>
2 <div class="example">
3   <div class="dot"></div>
4 </div>
5 </body>

  (2)CSS样式

 1 <style type="text/css">
 2    .example {
 3     position:relative;
 4     margin:150px auto;
 5     50px;
 6     height:50px;
 7     }
 8   .dot:before{
 9     content:' ';
10     position: absolute;
11     z-index:2;
12     left:0;
13     top:0;
14     10px;
15     height:10px; 
16     background-color: #ff4200;
17     border-radius: 50%;
18   }
19  
20   .dot:after {
21     content:' ';
22     position: absolute;
23     z-index:1;
24     10px;
25     height:10px; 
26     background-color: #ff4200;
27     border-radius: 50%;
28     box-shadow: 0 0 10px rgba(0,0,0,.3) inset;
29     -webkit-animation: waveCircle 1s ease infinite normal ;
 1  
 2     /*-webkit-animation-name: ripple;
 3     -webkit-animation-duration: 1s;
 4     -webkit-animation-timing-function: ease; 
 5     -webkit-animation-delay: 0s;
 6     -webkit-animation-iteration-count: infinite;
 7     -webkit-animation-direction: normal;*/
 8   }
 9  
10   @keyframes waveCircle {
11      0% {
12       left:5px;
13       top:5px;
14       0;
15       height:0;
16     }
17     100% {
18       left:-20px;
19       top:-20px;
20       opacity: 0;
21       50px;
22       height:50px;
23     }
24   }
25     </style>
原文地址:https://www.cnblogs.com/cangqinglang/p/9797084.html