-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
88 lines (79 loc) · 2.29 KB
/
Copy pathmain.js
File metadata and controls
88 lines (79 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
let isMuted = false;
const audio = document.getElementById("bgMusic");
const muteBtn = document.getElementById("muteBtn");
const bar = document.getElementById("music-bar");
function toggleMusic() {
isMuted = !isMuted;
if (isMuted) {
audio.volume = 0;
muteBtn.textContent = "🔇 Unmute";
muteBtn.classList.add("muted");
} else {
audio.volume = 1;
muteBtn.textContent = "🔊 Mute";
muteBtn.classList.remove("muted");
}
}
// Toggle visibility of music bar based on play/pause
audio.addEventListener("play", () => {
bar.style.position = "fixed";
});
audio.addEventListener("pause", () => {
bar.style.position = "none";
});
// Attach mute button listener
muteBtn.addEventListener("click", toggleMusic);
// Attach mute button listener
muteBtn.addEventListener("click", toggleMusic);
// Add click effects
document.addEventListener("click", function (e) {
if (e.target.tagName !== "BUTTON" && e.target.tagName !== "A") {
createRipple(e.clientX, e.clientY);
}
});
function createRipple(x, y) {
const ripple = document.createElement("div");
ripple.style.position = "fixed";
ripple.style.left = x - 25 + "px";
ripple.style.top = y - 25 + "px";
ripple.style.width = "50px";
ripple.style.height = "50px";
ripple.style.borderRadius = "50%";
ripple.style.background = "rgba(255, 255, 255, 0.3)";
ripple.style.pointerEvents = "none";
ripple.style.zIndex = "9999";
ripple.style.animation = "rippleEffect 0.6s ease-out forwards";
document.body.appendChild(ripple);
setTimeout(() => {
document.body.removeChild(ripple);
}, 600);
}
const rippleCSS = `
@keyframes rippleEffect {
0% {
transform: scale(0);
opacity: 1;
}
100% {
transform: scale(4);
opacity: 0;
}
}
`;
const style = document.createElement("style");
style.textContent = rippleCSS;
document.head.appendChild(style);
document.addEventListener("DOMContentLoaded", () => {
const bgMusic = document.getElementById("bgMusic");
const playAttempt = bgMusic.play();
if (playAttempt !== undefined) {
playAttempt.catch(() => {
const resumeAudio = () => {
bgMusic.play();
isPlaying = true;
document.removeEventListener("click", resumeAudio);
};
document.addEventListener("click", resumeAudio);
});
}
});