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>
相关推荐
清灵xmf36 分钟前
在 Vue 中实现与优化轮询技术
前端·javascript·vue·轮询
大佩梨1 小时前
VUE+Vite之环境文件配置及使用环境变量
前端
GDAL1 小时前
npm入门教程1:npm简介
前端·npm·node.js
小白白一枚1112 小时前
css实现div被图片撑开
前端·css
薛一半2 小时前
PC端查看历史消息,鼠标向上滚动加载数据时页面停留在上次查看的位置
前端·javascript·vue.js
@蒙面大虾2 小时前
CSS综合练习——懒羊羊网页设计
前端·css
过期的H2O22 小时前
【H2O2|全栈】JS进阶知识(四)Ajax
开发语言·javascript·ajax
MarcoPage2 小时前
第十九课 Vue组件中的方法
前端·javascript·vue.js
.net开发2 小时前
WPF怎么通过RestSharp向后端发请求
前端·c#·.net·wpf
**之火3 小时前
Web Components 是什么
前端·web components