当前位置: 首页 > news >正文

在文本行内加个倒计时(循环)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Next Day Delivery Countdown</title><style>#countdowns {font-size: 14px !important;font-weight: 700 !important;color: #2a6f9f !important;line-height: 1 !important;margin-bottom: 0 !important;transition: color 0.3s ease;}.b {font-weight: 700;}.p {margin-bottom: 0;font-family: Montserrat;font-size: 14px;color: #333;}.urgent {color: #ff0000 !important;animation: pulse 1s infinite;}@keyframes pulse {0% { opacity: 1; }50% { opacity: 0.7; }100% { opacity: 1; }}</style>
</head>
<body><p class="p"> (Your first-order promo ends at <span id="countdowns">06:23:04</span>.) </p><script>// 初始化倒计时时间(6小时23分钟04秒)
        const INITIAL_TIME = 6 * 60 * 60 + 23 * 60 + 4; // 总秒数
        let timeLeft = INITIAL_TIME;let timerInterval;// 从本地存储加载保存的倒计时function loadCountdown() {const savedEnd = localStorage.getItem('countdownEnd');const savedStart = localStorage.getItem('countdownStart');if (savedEnd && savedStart) {const now = Date.now();const endTime = parseInt(savedEnd);const startTime = parseInt(savedStart);// 检查是否过期if (now >= endTime) {// 如果过期,重置倒计时
                    resetCountdown();return;}// 计算剩余时间
                timeLeft = Math.max(0, Math.floor((endTime - now) / 1000));// 如果剩余时间超过初始时间,重置if (timeLeft > INITIAL_TIME) {resetCountdown();}} else {// 如果没有保存的数据,使用初始时间
                timeLeft = INITIAL_TIME;}}// 保存倒计时状态function saveCountdown() {const now = Date.now();const endTime = now + (timeLeft * 1000);localStorage.setItem('countdownEnd', endTime);localStorage.setItem('countdownStart', now);}// 重置倒计时function resetCountdown() {timeLeft = INITIAL_TIME;saveCountdown();}// 检查是否需要每日重置function checkDailyReset() {const now = new Date();const hours = now.getHours();const minutes = now.getMinutes();const seconds = now.getSeconds();// 在午夜重置(00:00:00)if (hours === 0 && minutes === 0 && seconds === 0) {resetCountdown();}}// 更新倒计时显示function updateCountdown() {// 检查每日重置
            checkDailyReset();// 计算小时、分钟、秒
            let hours = Math.floor(timeLeft / 3600);let minutes = Math.floor((timeLeft % 3600) / 60);let seconds = timeLeft % 60;const countdownElement = document.getElementById("countdowns");// 根据剩余时间改变显示样式if (timeLeft <= 0) {// 时间到
                clearInterval(timerInterval);countdownElement.innerHTML = "Time's up!";countdownElement.classList.add('urgent');resetCountdown(); // 自动重置// 1秒后重新开始倒计时
                setTimeout(() => {timeLeft = INITIAL_TIME;timerInterval = setInterval(updateCountdown, 1000);updateCountdown();}, 1000);return;} else {countdownElement.classList.remove('urgent');countdownElement.style.fontWeight = '700';countdownElement.style.color = '#2a6f9f';// 显示小时、分钟和秒,用冒号分隔
                countdownElement.innerHTML =hours.toString().padStart(2, '0') + ":" +minutes.toString().padStart(2, '0') + ":" +seconds.toString().padStart(2, '0');}// 减少剩余时间
            timeLeft--;// 每分钟保存一次状态if (timeLeft % 60 === 0) {saveCountdown();}}// 页面加载时初始化
        document.addEventListener('DOMContentLoaded', function () {// 加载保存的倒计时
            loadCountdown();// 保存初始状态
            saveCountdown();// 立即更新一次显示
            updateCountdown();// 每秒更新一次
            timerInterval = setInterval(updateCountdown, 1000);// 页面可见性改变时处理
            document.addEventListener('visibilitychange', function () {if (!document.hidden) {// 页面重新可见时,重新加载倒计时
                    loadCountdown();updateCountdown();}});// 页面卸载前保存状态
            window.addEventListener('beforeunload', saveCountdown);});</script>
</body>
</html>

 

http://www.jsqmd.com/news/421767/

相关文章:

  • 二进制部署 kafka 4.20 并开启认证
  • 论文写作神器:免费大纲,降AI率,轻松通过知网
  • WPForms 与 OptinMonster 结合:如何构建功能强大的浮动联系表单
  • 学术写作不求人:2026论文“去AI化”与降重软件盘点
  • 岩石的剪胀性
  • 收藏!揭秘Deepseek爆火背后的AI力量,企业如何借力实现数字化转型?
  • 2026年硕士论文攻略:从初稿生成到降AI率的工具合集
  • 别等被AI甩下!程序员收藏:AI转型不慌,这5大工具让你效率起飞!
  • 2026年AI趋势:落地为王!省钱、解决真问题才是硬道理,收藏看懂未来!
  • 最佳少儿编程APP推荐:为孩子选择合适的编程学习工具 - 品牌测评鉴赏家
  • 研究生论文写作神器:免费生成大纲,一键降AI率!
  • LazyLLM黑科技 | 继承就能自动注册?元类注册机制深度解析
  • 9个优质少儿编程免费体验课全面对比及学习场景分析 为什么要先让孩子试免费的少儿编程课? - 品牌测评鉴赏家
  • 国密算法+国产系统,KU 2208-H3海光服务器筑牢工控安全防线
  • 位运算符
  • SOLID、DRY、KISS、YAGNI 原则 / OWASP 安全最佳实践
  • SpringAI+Qwen3-8B打造本地知识库系统!代码+教程,速收藏!
  • 哪款蛋白粉适合中老年?2026最好最安全老年人蛋白粉品牌推荐,认准刚需别乱买 - 资讯焦点
  • Datawhale干货:5分钟上手!大语言模型驱动的智能体初探,收藏这份进阶指南!
  • 本科留学中介选校PK:TOP10机构保底G5不是随便说说 - 博客湾
  • 大模型来袭!程序员不进则退,收藏这波干货,教你从代码工匠变身AI架构师!
  • BXMya 3ASC25H214 DATX130 分布式I/O模块
  • 哪个牌子的深海鱼油质量好最好用?2026最好用的鱼油排行榜,5大维度优势 - 资讯焦点
  • 本科留学中介排名TOP10:牛剑G5面邀率谁家最强 - 博客湾
  • PROMPT_COMMAND PS1 tty阻塞
  • 香港留学中介策略排名:科学申请策略帮你稳拿Offer - 博客湾
  • epa含量最高的深海鱼油什么牌子好?2026最佳鱼油排行榜TOP8,搞定营养需求 - 资讯焦点
  • 香港留学中介榜单:专攻港新的机构有哪些优势 - 博客湾
  • 基于51单片机智能直流电机控制PWM调速系统设计DIY18-692
  • 本科留学中介避雷 TOP10,附加考试辅导千万别马虎 - 博客湾