吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1062|回复: 20
收起左侧

[其他原创] 我是小白用HTML代码东拼西凑了一个下班倒计时

[复制链接]
zhangjuan 发表于 2024-12-19 16:30
刚见一大佬用HTML代码写了个倒计时器,我也凑热闹东拼西凑了一个下班倒计时,大致测试了一下也能跑出来



[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>下班倒计时</title>
<style>
    body, html {
        margin: 0;
        padding: 0;
        width: 100%;
        height: 100%;
        background: url('default_background_image_url_here') no-repeat center center fixed; 
        background-size: cover;
        display: flex;
        justify-content: center;
        align-items: center;
        font-family: Arial, sans-serif;
        color: white;
        transition: background 0.5s ease;
    }
    #container {
        text-align: center;
        max-width: 600px;
        width: 90%;
        padding: 2rem;
        background: rgba(0, 0, 0, 0.5); /* 半透明背景 */
        border-radius: 10px;
        box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
    }
    #countdown {
        font-size: 5em;
        margin-bottom: 1rem;
        text-shadow: 2px 2px 4px #000000;
    }
    #controls {
        display: flex;
        flex-direction: column;
        gap: 1.5rem;
        align-items: center;
    }
    .control-group {
        display: flex;
        flex-wrap: wrap;
        gap: 1rem;
        justify-content: space-around;
    }
    input, button {
        padding: 0.5rem 1rem;
        font-size: 1em;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        transition: all 0.3s ease;
    }
    input[type="time"], input[type="file"], input[type="text"] {
        width: 100%;
        max-width: 300px;
        padding: 0.75rem;
        background-color: #fff;
        color: #000;
        border: 1px solid #ccc;
    }
    button {
        background-color: #007BFF;
        color: #fff;
        &:hover {
            background-color: #0056b3;
        }
    }
    audio {
        width: 100%;
        max-width: 300px;
        margin-top: 1rem;
    }
    [url=home.php?mod=space&uid=945662]@media[/url] (min-width: 600px) {
        .control-group {
            flex-direction: row;
        }
    }
</style>
</head>
<body>

<div id="container">
    <div id="countdown">00:00:00</div>
    <div id="controls">
        <!-- 提示音设置 -->
        <div class="control-group">
            <input type="file" id="alertSound" accept="audio/*">
            <input type="text" id="alertSoundUrl" placeholder="或输入提示音URL">
            <button>设置提示音</button>
        </div>
        <!-- 背景图设置 -->
        <div class="control-group">
            <input type="file" id="backgroundImage" accept="image/*">
            <button>选择背景图</button>
        </div>
        <!-- 时间和音乐设置 -->
        <div class="control-group">
            <input type="time" id="offTime" value="18:00">
            <button>设置下班时间</button>
            <input type="file" id="localMusic" accept="audio/*">
            <input type="text" id="musicUrl" placeholder="或输入网络音乐URL">
            <button>加载音乐</button>
        </div>
        <audio id="backgroundMusic" controls></audio>
    </div>
</div>

<script>
function setCountdown() {
    const offTime = document.getElementById('offTime').value;
    if (offTime) {
        const [hours, minutes] = offTime.split(':').map(Number);
        let now = new Date();
        let offDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), hours, minutes, 0, 0);
        if (now >= offDate) {
            offDate.setDate(offDate.getDate() + 1); // 如果已经过了下班时间,则设定为明天的同一时间
        }
        countdownTo(offDate);
    }
}

function countdownTo(endDate) {
    const countdownElement = document.getElementById('countdown');
    const updateCountdown = () => {
        const now = new Date().getTime();
        const distance = endDate - now;

        let days = Math.floor(distance / (1000 * 60 * 60 * 24));
        let hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
        let minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
        let seconds = Math.floor((distance % (1000 * 60)) / 1000);

        countdownElement.textContent = `${days ? days + "d " : ""}${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;

        if (distance < 0) {
            clearInterval(interval);
            countdownElement.textContent = "下班时间已到!";
            playAlertSound(); // 在倒计时结束时播放提示音
        }
    };

    updateCountdown(); // 立即更新一次
    const interval = setInterval(updateCountdown, 1000);
}

function loadMusic() {
    const localMusic = document.getElementById('localMusic').files[0];
    const musicUrl = document.getElementById('musicUrl').value;
    const backgroundMusic = document.getElementById('backgroundMusic');

    if (localMusic) {
        const url = URL.createObjectURL(localMusic);
        backgroundMusic.src = url;
    } else if (musicUrl) {
        backgroundMusic.src = musicUrl;
    } else {
        alert('请先选择本地音乐或输入网络音乐URL');
    }
}

function setBackground() {
    const backgroundImage = document.getElementById('backgroundImage').files[0];
    if (backgroundImage) {
        const url = URL.createObjectURL(backgroundImage);
        document.body.style.backgroundImage = `url(${url})`;
    } else {
        alert('请选择一张图片作为背景');
    }
}

function setAlertSound() {
    const alertSound = document.getElementById('alertSound').files[0];
    const alertSoundUrl = document.getElementById('alertSoundUrl').value;
    const alertSoundPlayer = document.getElementById('alertSoundPlayer');

    if (alertSound) {
        const url = URL.createObjectURL(alertSound);
        alertSoundPlayer.src = url;
    } else if (alertSoundUrl) {
        alertSoundPlayer.src = alertSoundUrl;
    } else {
        alert('请先选择本地提示音或输入提示音URL');
    }
}

function playAlertSound() {
    const alertSoundPlayer = document.getElementById('alertSoundPlayer');
    if (alertSoundPlayer.src) {
        alertSoundPlayer.play();
    }
}
</script>

</body>
</html>

免费评分

参与人数 4吾爱币 +9 热心值 +4 收起 理由
DJS + 1 + 1 用心讨论,共获提升!
纳兰龙珠 + 1 + 1 用心讨论,共获提升!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yoga2joker + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

SherlockProel 发表于 2024-12-19 18:10
加班的情况考虑进去了吗?临下班要开会了情况呢
lbl123 发表于 2024-12-30 01:23
优化了一下

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>下班倒计时</title>
<style>
    /* 全局样式 */
    body, html {
        margin: 0;
        padding: 0;
        width: 100%;
        height: 100%;
        background: linear-gradient(135deg, #1e3c72, #2a5298);
        display: flex;
        justify-content: center;
        align-items: center;
        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        color: #fff;
        overflow: hidden;
    }

    /* 容器样式 */
    #container {
        text-align: center;
        width: 90%;
        max-width: 600px;
        padding: 2rem;
        background: rgba(255, 255, 255, 0.1);
        border-radius: 15px;
        backdrop-filter: blur(10px);
        box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
    }

    /* 时间显示样式 */
    #time-display {
        display: flex;
        justify-content: space-between;
        align-items: center;
        font-size: 2em;
        margin-bottom: 1.5rem;
        font-weight: bold;
    }

    #time-display span {
        flex: 1;
        text-align: center;
    }

    #time-display .separator {
        width: 2px;
        height: 40px;
        background: rgba(255, 255, 255, 0.5);
        margin: 0 1rem;
    }

    /* 倒计时样式 */
    #countdown {
        font-size: 3em;
        margin-bottom: 1.5rem;
        font-weight: bold;
        color: #ffcc00;
    }

    /* 控制区域样式 */
    #controls {
        display: flex;
        flex-direction: column;
        gap: 1rem;
        align-items: center;
    }

    .control-group {
        display: flex;
        flex-direction: column;
        gap: 0.75rem;
        width: 100%;
        max-width: 400px;
    }

    /* 输入框和按钮样式 */
    input, button {
        padding: 0.75rem;
        font-size: 1em;
        border: none;
        border-radius: 8px;
        width: 100%;
        box-sizing: border-box;
        transition: all 0.3s ease;
    }

    input[type="text"] {
        background-color: rgba(255, 255, 255, 0.9);
        color: #333;
    }

    button {
        background-color: #007BFF;
        color: #fff;
        cursor: pointer;
        font-weight: bold;
    }

    button:hover {
        background-color: #0056b3;
    }

    /* 音乐播放器样式 */
    audio {
        width: 100%;
        max-width: 400px;
        margin-top: 1rem;
    }

    /* 响应式设计 */
    @media (max-width: 600px) {
        #time-display {
            font-size: 1.5em;
        }

        #countdown {
            font-size: 2.5em;
        }

        #container {
            padding: 1.5rem;
        }
    }
</style>
</head>
<body>
<div id="container">
    <!-- 时间显示 -->
    <div id="time-display">
        <span id="current-time">00:00:00</span>
        <div class="separator"></div>
        <span id="off-time">18:00:00</span>
    </div>
    <!-- 倒计时 -->
    <div id="countdown">00:00:00</div>
    <!-- 控制区域 -->
    <div id="controls">
        <!-- 背景图设置 -->
        <div class="control-group">
            <input type="text" id="backgroundImageUrl" placeholder="输入背景图URL">
            <button>设置背景图</button>
        </div>
        <!-- 音乐设置 -->
        <div class="control-group">
            <input type="text" id="musicUrl" placeholder="输入音乐URL">
            <button>加载音乐</button>
        </div>
        <!-- 下班时间设置 -->
        <div class="control-group">
            <input type="time" id="offTime" value="18:00">
            <button>设置下班时间</button>
        </div>
        <audio id="backgroundMusic" controls></audio>
    </div>
</div>
<script>
    // 更新时间显示
    function updateTime() {
        const now = new Date();
        const currentTime = now.toLocaleTimeString('zh-CN', { hour12: false });
        document.getElementById('current-time').textContent = currentTime;
    }

    // 设置下班时间
    function setCountdown() {
        const offTime = document.getElementById('offTime').value;
        if (offTime) {
            const [hours, minutes] = offTime.split(':').map(Number);
            let now = new Date();
            let offDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), hours, minutes, 0, 0);
            if (now >= offDate) {
                offDate.setDate(offDate.getDate() + 1); // 如果已经过了下班时间,则设定为明天的同一时间
            }
            countdownTo(offDate);
            document.getElementById('off-time').textContent = offTime;
        }
    }

    // 倒计时逻辑
    function countdownTo(endDate) {
        const countdownElement = document.getElementById('countdown');
        const updateCountdown = () => {
            const now = new Date().getTime();
            const distance = endDate - now;

            let hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            let minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
            let seconds = Math.floor((distance % (1000 * 60)) / 1000);

            countdownElement.textContent = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;

            if (distance < 0) {
                clearInterval(interval);
                countdownElement.textContent = "下班时间已到!";
            }
        };

        updateCountdown(); // 立即更新一次
        const interval = setInterval(updateCountdown, 1000);
    }

    // 加载音乐
    function loadMusic() {
        const musicUrl = document.getElementById('musicUrl').value;
        const backgroundMusic = document.getElementById('backgroundMusic');

        if (musicUrl) {
            backgroundMusic.src = musicUrl;
        } else {
            alert('请输入音乐URL');
        }
    }

    // 设置背景图
    function setBackground() {
        const backgroundImageUrl = document.getElementById('backgroundImageUrl').value;
        if (backgroundImageUrl) {
            document.body.style.backgroundImage = `url(${backgroundImageUrl})`;
        } else {
            alert('请输入背景图URL');
        }
    }

    // 每秒更新时间
    setInterval(updateTime, 1000);
    updateTime(); // 初始化时间显示
</script>
</body>
</html>
hhzgmax 发表于 2024-12-19 17:54
Mr6ing 发表于 2024-12-19 18:00
鼓励一下
cfvgbhnj 发表于 2024-12-19 20:48
screenshot-1734612367723.png
然后呢,没有开始啥的?
lqinyli 发表于 2024-12-20 07:30
牛逼哦 膜拜大佬
zhaoyongru2021 发表于 2024-12-20 08:21
摸鱼  摸出新高度  哈哈哈哈哈哈哈
ysjd22 发表于 2024-12-20 08:24
哈哈。真不错呢
lsb2pojie 发表于 2024-12-20 08:53
有点意思,不过确实缺了action,设置下班时间需要调用下setCountdown接口:
<button onclick="setCountdown()">设置下班时间</button>
94e8v061 发表于 2024-12-20 08:57
有意思的设计
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-7 20:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表