| | $(document).ready(function () {
|
| | const envelope = $('#envelope');
|
| | const openBtn = $("#openBtn");
|
| | const resetBtn = $("#resetBtn");
|
| |
|
| | let currentPage = 1;
|
| | const totalPages = 23;
|
| | let isOpen = false;
|
| |
|
| | envelope.on('click', function () {
|
| | if (isOpen) nextLyric();
|
| | });
|
| |
|
| | openBtn.on('click', function () {
|
| | envelope.removeClass("close").addClass("open");
|
| | isOpen = true;
|
| | openBtn.hide();
|
| | resetBtn.show();
|
| | });
|
| |
|
| | resetBtn.on('click', function () {
|
| | envelope.removeClass("open").addClass("close");
|
| | isOpen = false;
|
| | setTimeout(function () {
|
| | currentPage = 1;
|
| | updateActivePage();
|
| | resetBtn.hide();
|
| | openBtn.show();
|
| | }, 600);
|
| | });
|
| |
|
| | function nextLyric() {
|
| | currentPage = currentPage < totalPages ? currentPage + 1 : 1;
|
| | updateActivePage();
|
| | }
|
| |
|
| | function updateActivePage() {
|
| | $(".lyric-page").removeClass("active");
|
| | $("#page" + currentPage).addClass("active");
|
| | }
|
| | });
|
| |
|
| | const openBtn = document.getElementById("openBtn");
|
| | const resetBtn = document.getElementById("resetBtn");
|
| | const envelope = document.getElementById("envelope");
|
| | const audio = document.getElementById("sound");
|
| |
|
| | let hasPlayed = false;
|
| |
|
| | function playAudioOnce() {
|
| | audio.currentTime = 21;
|
| | if (!hasPlayed) {
|
| | audio.play().then(() => {
|
| | hasPlayed = true;
|
| | }).catch((e) => {
|
| | console.log("Không thể phát nhạc:", e);
|
| | });
|
| | }
|
| | }
|
| |
|
| | openBtn.addEventListener("click", function () {
|
| | envelope.classList.remove("close");
|
| | envelope.classList.add("open");
|
| | openBtn.style.display = "none";
|
| | resetBtn.style.display = "inline-block";
|
| | playAudioOnce();
|
| | });
|
| |
|
| | resetBtn.addEventListener("click", function () {
|
| | envelope.classList.remove("open");
|
| | envelope.classList.add("close");
|
| | openBtn.style.display = "inline-block";
|
| | resetBtn.style.display = "none";
|
| | playAudioOnce();
|
| | });
|
| |
|
| | const starField = document.querySelector('.star-field');
|
| |
|
| | for (let i = 0; i < 200; i++) {
|
| | const star = document.createElement('div');
|
| | star.classList.add('star');
|
| |
|
| | const x = Math.random() * 100;
|
| | const y = Math.random() * 100;
|
| | const delay = Math.random() * 5;
|
| | const duration = 2 + Math.random() * 3;
|
| |
|
| | star.style.left = x + 'vw';
|
| | star.style.top = y + 'vh';
|
| | star.style.animationDelay = delay + 's';
|
| | star.style.animationDuration = duration + 's';
|
| |
|
| | starField.appendChild(star);
|
| | }
|
| |
|
| | function createSnowflake() {
|
| | const snow = document.createElement("div");
|
| | snow.classList.add("snowflake");
|
| | snow.textContent = "❄";
|
| |
|
| |
|
| | snow.style.left = Math.random() * 100 + "vw";
|
| | snow.style.animationDuration = 5 + Math.random() * 5 + "s";
|
| | snow.style.fontSize = (10 + Math.random() * 15) + "px";
|
| |
|
| | document.body.appendChild(snow);
|
| |
|
| |
|
| | setTimeout(() => {
|
| | snow.remove();
|
| | }, 10000);
|
| | }
|
| |
|
| |
|
| | setInterval(createSnowflake, 150); |