- vừa được xem lúc

[HTML] Cách tạo một tấm thiệp giáng sinh đẹp và đơn giản chỉ với 1 file html

0 0 3

Người đăng: Michael Mike

Theo Viblo Asia

Chào các bác, đây là bài viết đầu tiên của mình.

Mình cũng làm dev front-end được một thời gian rồi, lâu lâu mình ngồi code những project nhỏ nhỏ như tấm thiệp giáng sinh để gửi tặng người yêu mình.

Thoai mình khum nói nhiều nữa, chúng ta bắt tay vào làm ra thành phẩm thôi nhỉ:

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Merry Christmas</title> <style> body { margin: 0; overflow: hidden; background-color: black; /* Set the background color to black */ background-image: url('./christmast_bg.jpg'); } #snowfall { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; } .snowflake { position: absolute; width: 5px; height: 5px; background-color: white; border-radius: 50%; pointer-events: none; animation: snowfallAnimation linear infinite; animation-duration: 2s; } #gift-box { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); cursor: pointer; font-size: 50px; /* Adjust the font size to make the gift box larger */ z-index: 1; } .gift { animation: rotateGift linear infinite; animation-duration: 4s; } #message { display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 24px; color: #bd3634; text-align: center; z-index: 2; max-width: 80%; padding: 20px; } .message-letter { font-family: cursive; font-style: italic; transform: rotate(10deg); cursor: pointer; } .message-cover { position: absolute; z-index: -1; top: -90px; left: -120px; width: 600px; } @keyframes snowfallAnimation { 0% { transform: translateY(0); } 100% { transform: translateY(100vh); } } @keyframes rotateGift { 0% { transform: rotateZ(0deg); } 100% { transform: rotateZ(360deg); } } </style>
</head> <body> <div id="snowfall"></div> <div id="gift-box" onclick="showMessage()"><img class="gift" src="./gift.png" /></div> <div id="message"> <img class="message-cover" src="./scroll.png" /> <p class="message-letter"> Merry Christmas Xuxu<br> You are my love, my angle! </p> </div> <script> // Snowfall effect function createSnowflake() { const snowflake = document.createElement("div"); snowflake.className = "snowflake"; snowflake.style.left = Math.random() * window.innerWidth + "px"; document.getElementById("snowfall").appendChild(snowflake); setTimeout(() => { snowflake.remove(); }, 5000); } setInterval(createSnowflake, 100); // Show message function function showMessage() { const giftBox = document.getElementById("gift-box"); const message = document.getElementById("message"); // Hide the gift box giftBox.style.display = "none"; // Show the message message.style.display = "block"; // You can customize the duration the message is displayed setTimeout(() => { // Show the gift box again giftBox.style.display = "block"; message.style.display = "none"; }, 50000); } </script>
</body> </html>

Trong đó : ./gift.png là ảnh hộp quà, (https://www.google.com/search?q=gift+transparent+gif&tbm=isch&ved=2ahUKEwik44zO4tSDAxUIka8BHTB_BK8Q2-cCegQIABAA&oq=gift+tra&gs_lcp=CgNpbWcQARgAMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDoKCAAQgAQQigUQQ1CgAlj8HWD8KWgAcAB4AIABUYgB5AKSAQE1mAEAoAEBqgELZ3dzLXdpei1pbWfAAQE&sclient=img&ei=EJOfZaSbEYiivr0PsP6R-Ao&bih=835&biw=1745&rlz=1C1GCEU_enVN1091VN1091)

./scroll.png là hình ảnh tờ giấy chưa lời chúc giáng sinh tới người yêu (các bác có thể lấy từ đây : https://www.google.com/search?q=scroll&sca_esv=597433386&rlz=1C1GCEU_enVN1091VN1091&tbm=isch&source=lnms&sa=X&ved=2ahUKEwiyz6LC4tSDAxUUsFYBHcAYA5gQ_AUoAXoECAEQAw&biw=1745&bih=835&dpr=1.1).

'./christmast_bg.jpg' là background giáng sinh (các bác có thể sửa thành phông valentin, chúc mừng năm mới,...)

Hãy gởi người yêu món quà ý nghĩa đi nào

Bình luận

Bài viết tương tự

- vừa được xem lúc

Một số quy tắc và name class phổ biến cho Front-end Dev

Trong CSS, các thủ tục setting đóng vai trò to lớn, nhưng bên cạnh đó, cách đặt tên theo các từ đơn sao cho phù hợp cũng quan trọng không kém . Đặt tên rất khó, nhưng cũng rất quan trọng .

0 0 79

- vừa được xem lúc

2021, chúng ta cần tối ưu hóa việc tải hình ảnh trên web như nào?

Rất chào các bạn,. Như các bạn đã biết, trong kỉ nguyên công nghệ, song song với sự sinh ra dày đặc của các trang web mới cũng là sự biến mất của những trang web "lạc hậu" hay hoạt động kém hiệu quả.

0 0 44

- vừa được xem lúc

Tài nguyên nghiên cứu sâu Html

1. Articles and standards. . HTML 5.

0 0 183

- vừa được xem lúc

Tìm hiểu về Event.preventDefault(), Event.stopPropagation() và Event.stopImmediatePropagation()

Chúng ta thương thấy 3 method này và có thể dẫn dến bối rối và nhầm lẫn giữa chúng:. . Event.preventDefault().

0 0 36

- vừa được xem lúc

Vanilla JS Project: Tính tuổi

1. Yêu cầu.

0 0 51

- vừa được xem lúc

Thủ thuật nhỏ để căn chỉnh image với object-fit

Chào các bạn,. Có lẽ trong hành trình code của các bạn thì không ít lần gặp vấn đề méo ảnh do fix cứng cả width, height của ảnh nhỉ? Hoặc kể cả khi bạn set value cho 1 thuộc tính weigth hoặc height còn thuộc tính còn lại để auto thì nhiều lúc ảnh cũng không được hiển thị toàn vẹn cho lắm.

0 0 34