I’m trying to solve this problem, but I’m giving up and I’m here to see if you can give me some hints.
I made this bubble effect in which when I touch each bubble it pops, but I can’t get the bubbles to reappear after a few seconds (as if they were new bubbles).
I leave the code here below:
JavaScript
x
54
54
1
function changeStyle1() {
2
var element = document.getElementById("pop1");
3
element.style.opacity = "0";
4
}
5
6
function changeStyle2() {
7
var element = document.getElementById("pop2");
8
element.style.opacity = "0";
9
}
10
11
function changeStyle3() {
12
var element = document.getElementById("pop3");
13
element.style.opacity = "0";
14
}
15
16
function changeStyle4() {
17
var element = document.getElementById("pop4");
18
element.style.opacity = "0";
19
}
20
21
function changeStyle5() {
22
var element = document.getElementById("pop5");
23
element.style.opacity = "0";
24
}
25
26
function changeStyle6() {
27
var element = document.getElementById("pop6");
28
element.style.opacity = "0";
29
}
30
31
function changeStyle7() {
32
var element = document.getElementById("pop7");
33
element.style.opacity = "0";
34
}
35
36
function changeStyle8() {
37
var element = document.getElementById("pop8");
38
element.style.opacity = "0";
39
}
40
41
function changeStyle9() {
42
var element = document.getElementById("pop9");
43
element.style.opacity = "0";
44
}
45
46
function changeStyle10() {
47
var element = document.getElementById("pop10");
48
element.style.opacity = "0";
49
}
50
51
function changeStyle11() {
52
var element = document.getElementById("pop11");
53
element.style.opacity = "0";
54
}
JavaScript
1
268
268
1
body {
2
background: #000;
3
color: #333;
4
font: 100% Lato, Arial, Sans Serif;
5
height: 100vh;
6
margin: 0;
7
padding: 0;
8
overflow-x: hidden;
9
}
10
11
12
/* OBJECTS */
13
14
button {
15
background: transparent;
16
border-color: transparent;
17
}
18
19
.bubble {
20
position: fixed;
21
width: 200px;
22
height: 200px;
23
border-radius: 50%;
24
box-shadow: inset 0 0 25px rgba(255, 255, 255, 0.25);
25
}
26
27
.bubble:after {
28
content: '';
29
position: absolute;
30
top: 80px;
31
left: 80px;
32
width: 20px;
33
height: 20px;
34
border-radius: 50%;
35
background: #fff;
36
z-index: 10;
37
filter: blur(2px);
38
}
39
40
.bubble::before {
41
content: '';
42
position: absolute;
43
top: 50px;
44
left: 45px;
45
width: 30px;
46
height: 30px;
47
border-radius: 50%;
48
background: #fff;
49
z-index: 10;
50
filter: blur(2px);
51
}
52
53
.bubble span {
54
position: absolute;
55
border-radius: 50%;
56
}
57
58
.bubble span:nth-child(1) {
59
inset: 10px;
60
border-left: 15px solid #0fb4ff;
61
filter: blur(8px);
62
}
63
64
.bubble span:nth-child(2) {
65
inset: 10px;
66
border-right: 15px solid #ff4484;
67
filter: blur(8px);
68
}
69
70
.bubble span:nth-child(3) {
71
inset: 20px;
72
border-top: 15px solid #ffeb3b;
73
filter: blur(8px);
74
}
75
76
.bubble span:nth-child(4) {
77
inset: 30px;
78
border-left: 15px solid #ff4484;
79
filter: blur(12px);
80
}
81
82
.bubble span:nth-child(5) {
83
inset: 10px;
84
border-bottom: 10px solid #fff;
85
filter: blur(8px);
86
transform: rotate (330deg);
87
}
88
89
90
/* ANIMATIONS */
91
92
.x1 {
93
-webkit-animation: animateBubble 25s linear infinite, sideWays 2s ease-in-out infinite alternate;
94
-moz-animation: animateBubble 25s linear infinite, sideWays 2s ease-in-out infinite alternate;
95
animation: animateBubble 25s linear infinite, sideWays 2s ease-in-out infinite alternate;
96
left: -5%;
97
top: 5%;
98
-webkit-transform: scale(0.6);
99
-moz-transform: scale(0.6);
100
transform: scale(0.6);
101
}
102
103
.x2 {
104
-webkit-animation: animateBubble 20s linear infinite, sideWays 4s ease-in-out infinite alternate;
105
-moz-animation: animateBubble 20s linear infinite, sideWays 4s ease-in-out infinite alternate;
106
animation: animateBubble 20s linear infinite, sideWays 4s ease-in-out infinite alternate;
107
left: 5%;
108
top: 80%;
109
-webkit-transform: scale(0.4);
110
-moz-transform: scale(0.4);
111
transform: scale(0.4);
112
}
113
114
.x3 {
115
-webkit-animation: animateBubble 28s linear infinite, sideWays 2s ease-in-out infinite alternate;
116
-moz-animation: animateBubble 28s linear infinite, sideWays 2s ease-in-out infinite alternate;
117
animation: animateBubble 28s linear infinite, sideWays 2s ease-in-out infinite alternate;
118
left: 10%;
119
top: 40%;
120
-webkit-transform: scale(0.7);
121
-moz-transform: scale(0.7);
122
transform: scale(0.7);
123
}
124
125
.x4 {
126
-webkit-animation: animateBubble 22s linear infinite, sideWays 3s ease-in-out infinite alternate;
127
-moz-animation: animateBubble 22s linear infinite, sideWays 3s ease-in-out infinite alternate;
128
animation: animateBubble 22s linear infinite, sideWays 3s ease-in-out infinite alternate;
129
left: 20%;
130
top: 0;
131
-webkit-transform: scale(0.3);
132
-moz-transform: scale(0.3);
133
transform: scale(0.3);
134
}
135
136
.x5 {
137
-webkit-animation: animateBubble 29s linear infinite, sideWays 4s ease-in-out infinite alternate;
138
-moz-animation: animateBubble 29s linear infinite, sideWays 4s ease-in-out infinite alternate;
139
animation: animateBubble 29s linear infinite, sideWays 4s ease-in-out infinite alternate;
140
left: 30%;
141
top: 50%;
142
-webkit-transform: scale(0.5);
143
-moz-transform: scale(0.5);
144
transform: scale(0.5);
145
}
146
147
.x6 {
148
-webkit-animation: animateBubble 21s linear infinite, sideWays 2s ease-in-out infinite alternate;
149
-moz-animation: animateBubble 21s linear infinite, sideWays 2s ease-in-out infinite alternate;
150
animation: animateBubble 21s linear infinite, sideWays 2s ease-in-out infinite alternate;
151
left: 50%;
152
top: 0;
153
-webkit-transform: scale(0.8);
154
-moz-transform: scale(0.8);
155
transform: scale(0.8);
156
}
157
158
.x7 {
159
-webkit-animation: animateBubble 20s linear infinite, sideWays 2s ease-in-out infinite alternate;
160
-moz-animation: animateBubble 20s linear infinite, sideWays 2s ease-in-out infinite alternate;
161
animation: animateBubble 20s linear infinite, sideWays 2s ease-in-out infinite alternate;
162
left: 65%;
163
top: 70%;
164
-webkit-transform: scale(0.4);
165
-moz-transform: scale(0.4);
166
transform: scale(0.4);
167
}
168
169
.x8 {
170
-webkit-animation: animateBubble 22s linear infinite, sideWays 3s ease-in-out infinite alternate;
171
-moz-animation: animateBubble 22s linear infinite, sideWays 3s ease-in-out infinite alternate;
172
animation: animateBubble 22s linear infinite, sideWays 3s ease-in-out infinite alternate;
173
left: 80%;
174
top: 10%;
175
-webkit-transform: scale(0.3);
176
-moz-transform: scale(0.3);
177
transform: scale(0.3);
178
}
179
180
.x9 {
181
-webkit-animation: animateBubble 29s linear infinite, sideWays 4s ease-in-out infinite alternate;
182
-moz-animation: animateBubble 29s linear infinite, sideWays 4s ease-in-out infinite alternate;
183
animation: animateBubble 29s linear infinite, sideWays 4s ease-in-out infinite alternate;
184
left: 90%;
185
top: 50%;
186
-webkit-transform: scale(0.6);
187
-moz-transform: scale(0.6);
188
transform: scale(0.6);
189
}
190
191
.x10 {
192
-webkit-animation: animateBubble 26s linear infinite, sideWays 2s ease-in-out infinite alternate;
193
-moz-animation: animateBubble 26s linear infinite, sideWays 2s ease-in-out infinite alternate;
194
animation: animateBubble 26s linear infinite, sideWays 2s ease-in-out infinite alternate;
195
left: 80%;
196
top: 80%;
197
-webkit-transform: scale(0.3);
198
-moz-transform: scale(0.3);
199
transform: scale(0.3);
200
}
201
202
.x11 {
203
-webkit-animation: animateBubble 19s linear infinite, sideWays 3s ease-in-out infinite alternate;
204
-moz-animation: animateBubble 19s linear infinite, sideWays 3s ease-in-out infinite alternate;
205
animation: animateBubble 19s linear infinite, sideWays 3s ease-in-out infinite alternate;
206
left: 90%;
207
top: 90%;
208
-webkit-transform: scale(0.7);
209
-moz-transform: scale(0.7);
210
transform: scale(0.7);
211
}
212
213
214
/* KEYFRAMES */
215
216
@-webkit-keyframes animateBubble {
217
0% {
218
margin-top: 1000px;
219
}
220
100% {
221
margin-top: -100%;
222
}
223
}
224
225
@-moz-keyframes animateBubble {
226
0% {
227
margin-top: 1000px;
228
}
229
100% {
230
margin-top: -100%;
231
}
232
}
233
234
@keyframes animateBubble {
235
0% {
236
margin-top: 1000px;
237
}
238
100% {
239
margin-top: -100%;
240
}
241
}
242
243
@-webkit-keyframes sideWays {
244
0% {
245
margin-left: 0px;
246
}
247
100% {
248
margin-left: 50px;
249
}
250
}
251
252
@-moz-keyframes sideWays {
253
0% {
254
margin-left: 0px;
255
}
256
100% {
257
margin-left: 50px;
258
}
259
}
260
261
@keyframes sideWays {
262
0% {
263
margin-left: 0px;
264
}
265
100% {
266
margin-left: 50px;
267
}
268
}
JavaScript
1
87
87
1
<head>
2
<title>Pure CSS Animated Bubbles</title>
3
</head>
4
5
<body>
6
<button type="button" onclick="changeStyle()">Click Me</button>
7
<div id="background-wrap">
8
<button id="pop1" onclick="changeStyle1()" class="bubble x1">
9
<span></span>
10
<span></span>
11
<span></span>
12
<span></span>
13
<span></span>
14
</button>
15
<button id="pop2" onclick="changeStyle2()" class="bubble x2">
16
<span></span>
17
<span></span>
18
<span></span>
19
<span></span>
20
<span></span>
21
</button>
22
<button id="pop3" onclick="changeStyle3()" class="bubble x3">
23
<span></span>
24
<span></span>
25
<span></span>
26
<span></span>
27
<span></span>
28
</button>
29
<button id="pop4" onclick="changeStyle4()" class="bubble x4">
30
<span></span>
31
<span></span>
32
<span></span>
33
<span></span>
34
<span></span>
35
</button>
36
<button id="pop5" onclick="changeStyle5()" class="bubble x5">
37
<span></span>
38
<span></span>
39
<span></span>
40
<span></span>
41
<span></span>
42
</button>
43
<button id="pop6" onclick="changeStyle6()" class="bubble x6">
44
<span></span>
45
<span></span>
46
<span></span>
47
<span></span>
48
<span></span>
49
</button>
50
<button id="pop7" onclick="changeStyle7()" class="bubble x7">
51
<span></span>
52
<span></span>
53
<span></span>
54
<span></span>
55
<span></span>
56
</button>
57
<button id="pop8" onclick="changeStyle8()" class="bubble x8">
58
<span></span>
59
<span></span>
60
<span></span>
61
<span></span>
62
<span></span>
63
</button>
64
<button id="pop9" onclick="changeStyle9()" class="bubble x9">
65
<span></span>
66
<span></span>
67
<span></span>
68
<span></span>
69
<span></span>
70
</button>
71
<button id="pop10" onclick="changeStyle10()" class="bubble x10">
72
<span></span>
73
<span></span>
74
<span></span>
75
<span></span>
76
<span></span>
77
</button>
78
<button id="pop11" onclick="changeStyle11()" class="bubble x11">
79
<span></span>
80
<span></span>
81
<span></span>
82
<span></span>
83
<span></span>
84
</button>
85
</div>
86
</div>
87
</body>
Codepen link: https://codepen.io/tomas-saint-romain/details/LYdaMRG
Advertisement
Answer
You dont need all of those functions,just one will be enough
JS
JavaScript
1
13
13
1
const changeStyleToBubble = (id) => {
2
3
//we get the id directly from the html element,as parameter
4
const element = document.getElementById(id);
5
element.style.opacity = "0";
6
7
//set it back to 1 after 2 seconds (2000 ms)
8
setTimeout(() => {
9
element.style.opacity = "1";
10
}, 2000)
11
12
}
13
HTML
JavaScript
1
2
1
<button id="pop2" onclick="changeStyleToBubble(this.id)" class="bubble x2">
2