4个自定义倒计时

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <title>4个自定义倒计时</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            user-select: none;

            body {
                background: #0b1b2c;
            }




        }

        header {
            width: 100vw;
            height: 40px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            background-color: #cbcbcb;



            /* logo */
            figure.logo {
                width: 262px;
                height: 50px;
                /* 缩小 */
                transform: scale(0.8);
                margin-top: 2px;
                margin-left: -15px;
                border-radius: 50%;
                background: #f30303;
                box-shadow: inset 4px 4px 4px rgba(255, 255, 255, 0.6),
                    inset -4px -4px 5px rgba(0, 0, 0, 0.6);
                z-index: 99;

                figcaption {
                    background: hsl(0, 0%, 0%);
                    background-clip: text;
                    -webkit-background-clip: text;
                    -webkit-text-fill-color: transparent;
                    font-weight: bold;
                    box-shadow: inset 4px 4px 4px rgba(255, 255, 255, 0.6), inset -4px -4px 5px rgba(0, 0, 0, 0.6);
                    letter-spacing: -3px;
                    line-height: 45px;
                    border-radius: 50%;
                    font-size: 40px;
                    width: 152px;
                }

                .my_name1 {
                    text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.726);
                    clip-path: polygon(0% 0%, 100% 0%, 100% 50%, 0% 50%);
                    transform: translate(35%, 0%);
                }

                .my_name2 {
                    text-shadow: 1px 1px 1px hsla(160, 100%, 37%, 0.555);
                    clip-path: polygon(0% 50%, 100% 50%, 100% 100%, 0% 100%);
                    transform: translate(35%, -93%);
                }

                img {
                    width: 60px;
                    height: 35px;
                    border-radius: 50%;
                    transition: transform 0.3s ease;
                    position: absolute;

                    &:hover {
                        transform: scale(1.3);
                        filter: drop-shadow(0 0 0.3em #ff0202);
                    }
                }


                .kong {
                    margin-top: 7px;
                    margin-left: 200px;
                }

                .ying {
                    top: 7px;
                    margin-left: 2px;

                }
            }

            /* 时间 */
            time {
                background: -webkit-linear-gradient(315deg, #e1ff00 50%, #ff0000);
                background-clip: text;
                -webkit-background-clip: text;
                -webkit-text-fill-color: transparent;
                font-size: 1.5rem;
                font-weight: 900;
                text-shadow: 2px -1px 8px rgba(250, 80, 193, 0.323);

                sub {
                    -webkit-text-fill-color: #cfd601;
                    text-shadow: 1px 1px 1px #100000;
                    font-size: 1rem;
                }
            }



            /* 全屏还原关闭按钮 */
            menu {
                display: flex;

                button {
                    background: none;
                    border: none;
                }

                img {
                    width: 35px;
                    margin-top: 5px;
                    margin-right: 5px;
                    cursor: pointer;

                    &:hover {
                        transform: scale(1.2);
                        padding: 5px;
                        background: #ffd000;
                    }
                }

                button:nth-child(2) {
                    display: none;
                    /* 放大镜效果 */
                    transform: scale(1.16);
                }
            }
        }

        main {

            display: flex;
            flex-direction: column;
            align-items: center;

            button {
                font-size: 1.5rem;
                color: #d6d301;
                text-shadow: 1px 1px 1px #100000;
                font-weight: bold;
                cursor: pointer; 
                border-radius: 3px;
                background-color: #f30303;
                border: none;
                margin: 5px;
                padding: 3px;
            }

         


            dialog {
                transform: translate(180%, 80%);
                z-index: 999;
            }

            div {
                margin-top: 20px;
                color: #67c23a;
                text-shadow: 1px 1px 1px #100000;
            }
        }
    </style>
</head>

<body>
    <header>
        <!-- logo -->
        <figure class="logo">
            <a href="https://blog.csdn.net/lulei5153?spm=1011.2415.3001.5343" title="与妖为邻CSDN博客" target="_blank">
                <img class="kong" src="file:///D:/img/icon.ico" alt="与妖为邻">
            </a>
            <figcaption class="my_name1">与妖为邻</figcaption>
            <figcaption class="my_name2">与妖为邻</figcaption>

            <a href="file:///D:/web/html%E9%A6%96%E9%A1%B5/%E5%A4%87%E5%BF%98%E5%BD%95.html" class="home_page"
                title="首页" target="_blank">
                <img class="ying" src="file:///D:/img/ying.png" alt="与妖为邻">
            </a>

        </figure>
        <!-- 时间 -->
        <time datetime="2024-07-10" title="2024-07-10" id="dateTime">2024-07-10</time>

        <!-- 天气 -->
        <iframe class="tianqi" frameborder="0" width="280" height="36" scrolling="no" hspace="0"
            src="https://i.tianqi.com/?c=code&id=99">
        </iframe>

        <!-- 全屏还原关闭按钮 -->
        <menu>
            <button class="fullScreen" type="button"><img src="file:///D:/img/全屏.svg" alt="全屏"
                    onclick="fullScreen()"></button>
            <button class="exitFullScreen" type="button"><img src="file:///D:/img/还原.svg" alt="还原"
                    onclick="exitFullScreen()"></button>
            <button type="button"><img src="file:///D:/img/关闭.svg" alt="关闭" onclick="closeAll()"> </button>
        </menu>
    </header>
    <main>
        <!-- 第一个倒计时 -->
        <button onclick="dialogCountdownElement1.showModal()" id="countdownElement1">第一个倒计时</button>
        <dialog id="dialogCountdownElement1">
            <form method="dialog">
                <div>
                    <label for="message1">更改提示信息:</label>
                    <input type="text" id="message1" value="距离2024年国庆节还有:">
                </div>
                <div>
                    <label for="targetDate1">更改目标日期:</label>
                    <input type="datetime-local" id="targetDate1">
                </div>
                <button type="submit" style="display: block; margin: 5px auto;">关闭</button>
            </form>
        </dialog>

        <!-- 第二个倒计时 -->
        <button onclick="dialogCountdownElement2.showModal()" id="countdownElement2">第二个倒计时</button>
        <dialog id="dialogCountdownElement2">
            <form method="dialog">
                <div>
                    <label for="message2">更改提示信息:</label>
                    <input type="text" id="message2" value="距离2024年国庆节还有:">
                </div>
                <div>
                    <label for="targetDate2">更改目标日期:</label>
                    <input type="datetime-local" id="targetDate2">
                </div>
                <button type="submit" style="display: block; margin: 5px auto;">关闭</button>
            </form>
        </dialog>

        <!-- 第三个倒计时 -->
        <button onclick="dialogCountdownElement3.showModal()" id="countdownElement3">第三个倒计时</button>
        <dialog id="dialogCountdownElement3">
            <form method="dialog">
                <div>
                    <label for="message3">更改提示信息:</label>
                    <input type="text" id="message3" value="距离2024年国庆节还有:">
                </div>
                <div>
                    <label for="targetDate3">更改目标日期:</label>
                    <input type="datetime-local" id="targetDate3">
                </div>
                <button type="submit" style="display: block; margin: 5px auto;">关闭</button>
            </form>
        </dialog>

        <!-- 第四个倒计时 -->
        <button onclick="dialogCountdownElement4.showModal()" id="countdownElement4">第四个倒计时</button>
        <dialog id="dialogCountdownElement4">
            <form method="dialog">
                <div>
                    <label for="message4">更改提示信息:</label>
                    <input type="text" id="message4" value="距离2024年国庆节还有:">
                </div>
                <div>
                    <label for="targetDate4">更改目标日期:</label>
                    <input type="datetime-local" id="targetDate4">
                </div>
                <button type="submit" style="display: block; margin: 5px auto;">关闭</button>
            </form>
        </dialog>
        <div>
            <h2>2025主要节日时间表</h2>
            <ul>
                <li>元旦:2025年1月1日</li>
                <li>春节:2025年2月12日</li>
                <li>清明节:2025年4月4日</li>
                <li>劳动节:2025年5月1日</li>
                <li>端午节:2025年6月2日</li>
                <li>中秋节:2025年9月21日</li>
                <li>国庆节:2025年10月1日</li>
            </ul>
        </div>
    </main>

    <script>
        /* 现在时间*/
        var current_time = document.getElementById("dateTime");
        function showTime() {
            var now = new Date();
            var year = now.getFullYear();
            var month = ("0" + (now.getMonth() + 1)).slice(-2);
            var day = ("0" + now.getDate()).slice(-2);
            var hour = ("0" + now.getHours()).slice(-2);
            var min = ("0" + now.getMinutes()).slice(-2);
            var second = ("0" + now.getSeconds()).slice(-2);
            var week = [
                "星期日",
                "星期一",
                "星期二",
                "星期三",
                "星期四",
                "星期五",
                "星期六",
            ][now.getDay()];
            var time = `${year}-${month}-${day}<sub id='sub'>${week}</sub> ${hour}:${min}:${second}`;
            current_time.innerHTML = time;
        }
        showTime();
        setInterval(showTime, 1000);
        /* 现在时间 结束*/
         /* 全屏功能与关闭*/
    function fullScreen() {
        var elem = document.documentElement;
        if (elem.requestFullscreen) {
            elem.requestFullscreen();
        } else if (elem.mozRequestFullScreen) { // Firefox
            elem.mozRequestFullScreen();
        } else if (elem.webkitRequestFullscreen) { // Chrome, Safari and Opera
            elem.webkitRequestFullscreen();
        } else if (elem.msRequestFullscreen) { // IE/Edge
            elem.msRequestFullscreen();
        }
    }
    function exitFullScreen() {
        if (document.exitFullscreen) {
            document.exitFullscreen();
        } else if (document.mozCancelFullScreen) { // Firefox
            document.mozCancelFullScreen();
        } else if (document.webkitExitFullscreen) { // Chrome, Safari and Opera
            document.webkitExitFullscreen();
        } else if (document.msExitFullscreen) { // IE/Edge
            document.msExitFullscreen();
        }
    }
    // 获取全屏和还原按钮
    var fullScreenBtn = document.querySelector(".fullScreen");
    var exitFullScreenBtn = document.querySelector(".exitFullScreen");
    // 监听全屏和还原事件
    document.addEventListener("fullscreenchange", function () {
        if (document.fullscreenElement) {
            fullScreenBtn.style.display = "none";
            exitFullScreenBtn.style.display = "block";
        } else {
            fullScreenBtn.style.display = "block";
            exitFullScreenBtn.style.display = "none";
        }
    });
    // 关闭当前窗口
    function closeAll() {
        window.close();
    }
    /* 全屏功能与关闭 结束*/
        /* 倒计时功能实现*/
        // 加载时从localStorage读取数据
        window.onload = function () {
            var message1 = localStorage.getItem('message1');
            var targetDate1 = localStorage.getItem('targetDate1');
            var message2 = localStorage.getItem('message2');
            var targetDate2 = localStorage.getItem('targetDate2');
            var message3 = localStorage.getItem('message3');
            var targetDate3 = localStorage.getItem('targetDate3');
            var message4 = localStorage.getItem('message4');
            var targetDate4 = localStorage.getItem('targetDate4');

            if (message1) {
                document.getElementById('message1').value = message1;
            }
            if (targetDate1) {
                document.getElementById('targetDate1').value = targetDate1;
            }
            if (message2) {
                document.getElementById('message2').value = message2;
            }
            if (targetDate2) {
                document.getElementById('targetDate2').value = targetDate2;
            }
            if (message3) {
                document.getElementById('message3').value = message3;
            }
            if (targetDate3) {
                document.getElementById('targetDate3').value = targetDate3;
            }
            if (message4) {
                document.getElementById('message4').value = message4;
            }
            if (targetDate4) {
                document.getElementById('targetDate4').value = targetDate4;
            }
        };

        // 保存数据到localStorage
        function saveData1() {
            var message1 = document.getElementById('message1').value;
            var targetDate1 = document.getElementById('targetDate1').value;

            localStorage.setItem('message1', message1);
            localStorage.setItem('targetDate1', targetDate1);
        }

        function saveData2() {
            var message2 = document.getElementById('message2').value;
            var targetDate2 = document.getElementById('targetDate2').value;

            localStorage.setItem('message2', message2);
            localStorage.setItem('targetDate2', targetDate2);
        }

        function saveData3() {
            var message3 = document.getElementById('message3').value;
            var targetDate3 = document.getElementById('targetDate3').value;

            localStorage.setItem('message3', message3);
            localStorage.setItem('targetDate3', targetDate3);
        }

        function saveData4() {
            var message4 = document.getElementById('message4').value;
            var targetDate4 = document.getElementById('targetDate4').value;

            localStorage.setItem('message4', message4);
            localStorage.setItem('targetDate4', targetDate4);
        }

        // 监听输入框的变化并保存数据
        document.getElementById('message1').addEventListener('input', saveData1);
        document.getElementById('targetDate1').addEventListener('input', saveData1);
        document.getElementById('message2').addEventListener('input', saveData2);
        document.getElementById('targetDate2').addEventListener('input', saveData2);
        document.getElementById('message3').addEventListener('input', saveData3);
        document.getElementById('targetDate3').addEventListener('input', saveData3);
        document.getElementById('message4').addEventListener('input', saveData4);
        document.getElementById('targetDate4').addEventListener('input', saveData4);

        function showCountdown1() {
            var message1 = document.getElementById('message1').value;
            var targetDateInput1 = document.getElementById('targetDate1');
            var targetDateValue1 = targetDateInput1.value;
            var now = new Date();
            var targetDate1;

            if (targetDateValue1) {
                targetDate1 = new Date(targetDateValue1);
            } else {
                targetDate1 = new Date(2024, 9, 1); // 默认值:2024年10月1日
            }

            var diff1 = targetDate1 - now;

            var days1 = Math.floor(diff1 / (1000 * 60 * 60 * 24));
            var hours1 = Math.floor((diff1 % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            var minutes1 = Math.floor((diff1 % (1000 * 60 * 60)) / (1000 * 60));
            var seconds1 = Math.floor((diff1 % (1000 * 60)) / 1000);

            var countdownElement1 = document.getElementById('countdownElement1');
            countdownElement1.innerHTML = `${message1}${days1}天${hours1}小时${minutes1}分${seconds1}秒`;
        }

        function showCountdown2() {
            var message2 = document.getElementById('message2').value;
            var targetDateInput2 = document.getElementById('targetDate2');
            var targetDateValue2 = targetDateInput2.value;
            var now = new Date();
            var targetDate2;

            if (targetDateValue2) {
                targetDate2 = new Date(targetDateValue2);
            } else {
                targetDate2 = new Date(2024, 9, 1); // 默认值:2024年10月1日
            }

            var diff2 = targetDate2 - now;

            var days2 = Math.floor(diff2 / (1000 * 60 * 60 * 24));
            var hours2 = Math.floor((diff2 % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            var minutes2 = Math.floor((diff2 % (1000 * 60 * 60)) / (1000 * 60));
            var seconds2 = Math.floor((diff2 % (1000 * 60)) / 1000);

            var countdownElement2 = document.getElementById('countdownElement2');
            countdownElement2.innerHTML = `${message2}${days2}天${hours2}小时${minutes2}分${seconds2}秒`;
        }

        function showCountdown3() {
            var message3 = document.getElementById('message3').value;
            var targetDateInput3 = document.getElementById('targetDate3');
            var targetDateValue3 = targetDateInput3.value;
            var now = new Date();
            var targetDate3;

            if (targetDateValue3) {
                targetDate3 = new Date(targetDateValue3);
            } else {
                targetDate3 = new Date(2024, 9, 1); // 默认值:2024年10月1日
            }

            var diff3 = targetDate3 - now;

            var days3 = Math.floor(diff3 / (1000 * 60 * 60 * 24));
            var hours3 = Math.floor((diff3 % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            var minutes3 = Math.floor((diff3 % (1000 * 60 * 60)) / (1000 * 60));
            var seconds3 = Math.floor((diff3 % (1000 * 60)) / 1000);

            var countdownElement3 = document.getElementById('countdownElement3');
            countdownElement3.innerHTML = `${message3}${days3}天${hours3}小时${minutes3}分${seconds3}秒`;
        }

        function showCountdown4() {
            var message4 = document.getElementById('message4').value;
            var targetDateInput4 = document.getElementById('targetDate4');
            var targetDateValue4 = targetDateInput4.value;
            var now = new Date();
            var targetDate4;

            if (targetDateValue4) {
                targetDate4 = new Date(targetDateValue4);
            } else {
                targetDate4 = new Date(2024, 9, 1); // 默认值:2024年10月1日
            }

            var diff4 = targetDate4 - now;

            var days4 = Math.floor(diff4 / (1000 * 60 * 60 * 24));
            var hours4 = Math.floor((diff4 % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            var minutes4 = Math.floor((diff4 % (1000 * 60 * 60)) / (1000 * 60));
            var seconds4 = Math.floor((diff4 % (1000 * 60)) / 1000);

            var countdownElement4 = document.getElementById('countdownElement4');
            countdownElement4.innerHTML = `${message4}${days4}天${hours4}小时${minutes4}分${seconds4}秒`;
        }

        showCountdown1();
        setInterval(showCountdown1, 1000);
        showCountdown2();
        setInterval(showCountdown2, 1000);
        showCountdown3();
        setInterval(showCountdown3, 1000);
        showCountdown4();
        setInterval(showCountdown4, 1000);
        /* 倒计时功能实现 结束*/

    </script>
</body>

</html>
相关推荐
恋猫de小郭6 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
崔庆才丨静觅12 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606113 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了13 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅13 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅14 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅14 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment14 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅14 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊14 小时前
jwt介绍
前端