穿越时空的全球时钟:一个实时多时区显示的网页应用

引言

在当今这个全球化时代,人们经常需要与世界各地的朋友、同事或客户进行沟通。然而,由于时差的存在,找到一个合适的沟通时间往往成为一大挑战。为了解决这一问题,我们开发了一个名为“全球时钟”的网页应用,它能够实时显示多个主要城市的当前时间,帮助用户轻松管理跨时区的交流。

项目概述

“全球时钟”是一个基于HTML、CSS和JavaScript的网页应用,利用了Moment.js库来处理时间和时区。该应用不仅提供了直观的时间显示,还通过打字动画效果增强了用户体验。以下是项目的详细实现步骤和技术细节。

技术栈
  • HTML:用于构建页面结构。
  • CSS:用于样式设计,包括布局、颜色和动画效果。
  • JavaScript:用于动态更新时间和实现打字动画。
  • Moment.js:一个强大的JavaScript日期处理库,支持多种时区和格式化选项。
  • Moment Timezone:扩展了Moment.js的功能,使其能够处理全球各地的时区数据。
代码解析
HTML部分
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>全球时钟</title><link rel="stylesheet" href="styles.css"><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.34/moment-timezone-with-data.min.js"></script>
</head>
<body><div class="title-container"><h1 id="typing-title"></h1></div><div class="date-container"><p id="current-date"></p></div><div class="clock-container"><div class="clock" id="beijing"><h2>北 京</h2><p></p></div><div class="clock" id="tokyo"><h2>东 京</h2><p></p></div><!-- 其他城市 --></div><script src="script.js"></script>
</body>
</html>
CSS部分
/* styles.css */
body {font-family: Arial, sans-serif;background-color: #f4f4f4;display: flex;flex-direction: column;justify-content: center;align-items: center;height: 100vh;margin: 0;
}.title-container {margin-bottom: 20px;text-align: center;width: 100%;
}#typing-title {font-size: 2em;font-weight: bold;color: black;font-family: '黑体', sans-serif;white-space: nowrap;overflow: hidden;border-right: 2px solid black;animation: blink-caret 0.5s step-end infinite alternate;
}@keyframes blink-caret {from, to { border-color: transparent }50% { border-color: black }
}.date-container {margin-bottom: 20px;text-align: center;width: 100%;
}#current-date {font-size: 1.5em;font-weight: bold;color: black;
}.clock-container {display: grid;grid-template-columns: repeat(3, 1fr);gap: 20px;
}.clock {background-color: white;border-radius: 10px;box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);padding: 20px;text-align: center;position: relative;
}.clock::before {content: '';position: absolute;top: -10px;left: 0;width: 100%;height: 10px;background: linear-gradient(to right, #ff6b6b, #f7d794);border-radius: 10px 10px 0 0;
}.clock h2 {margin: 0;font-size: 1.5em;
}.clock p {font-size: 1.2em;margin: 20px 0 0;
}
JavaScript部分
function updateTime() {const beijingTime = moment.tz("Asia/Shanghai").format('【MM-DD】  HH:mm:ss');const tokyoTime = moment.tz("Asia/Tokyo").format('【MM-DD】  HH:mm:ss');const xinjiangTime = moment.tz("Asia/Urumqi").format('【MM-DD】  HH:mm:ss');const newYorkTime = moment.tz("America/New_York").format('【MM-DD】  HH:mm:ss');const torontoTime = moment.tz("America/Toronto").format('【MM-DD】  HH:mm:ss');const missouriTime = moment.tz("America/Chicago").format('【MM-DD】  HH:mm:ss');const sydneyTime = moment.tz("Australia/Sydney").format('【MM-DD】  HH:mm:ss');const delhiTime = moment.tz("Asia/Kolkata").format('【MM-DD】  HH:mm:ss');const moscowTime = moment.tz("Europe/Moscow").format('【MM-DD】  HH:mm:ss');document.getElementById('beijing').querySelector('p').textContent = beijingTime;document.getElementById('tokyo').querySelector('p').textContent = tokyoTime;document.getElementById('xinjiang').querySelector('p').textContent = xinjiangTime;document.getElementById('newyork').querySelector('p').textContent = newYorkTime;document.getElementById('toronto').querySelector('p').textContent = torontoTime;document.getElementById('missouri').querySelector('p').textContent = missouriTime;document.getElementById('sydney').querySelector('p').textContent = sydneyTime;document.getElementById('delhi').querySelector('p').textContent = delhiTime;document.getElementById('moscow').querySelector('p').textContent = moscowTime;
}// 初始化时间
updateTime();// 每秒更新一次时间
setInterval(updateTime, 1000);// 打字动画
const titleText = "全  球  时  钟";
let index = 0;function typeWriter() {if (index < titleText.length) {document.getElementById("typing-title").innerHTML += titleText.charAt(index);index++;setTimeout(typeWriter, 250); // 调整打字速度} else {setTimeout(() => {document.getElementById("typing-title").innerHTML = "";index = 0;typeWriter();}, 10000); // 每隔10秒重新开始}
}typeWriter();
效果如下:

在这里插入图片描述

功能说明
  1. 实时时间显示:应用每秒钟更新一次各个城市的当前时间,确保用户看到的是最新的时间信息。
  2. 多时区支持:通过Moment.js和Moment Timezone库,支持全球多个主要城市的时区。
  3. 美观的界面:使用CSS进行样式设计,使页面看起来简洁而现代。每个时钟块都有一个渐变色条,增加了视觉吸引力。
  4. 打字动画:标题部分采用打字机效果,逐字显示“全球时钟”,每隔10秒重新开始,为页面增添了一丝动感。
结语

“全球时钟”不仅是一个实用的工具,也是一个展示前端技术的小项目。通过简单的HTML、CSS和JavaScript代码,结合强大的第三方库,我们可以创建出既美观又实用的应用。希望这个项目能帮助你在跨时区交流中更加得心应手,也希望它能激发你对前端开发的兴趣。

以上代码部分由通义灵码编写完成,欢迎大家体验。

阿里云百炼大模型

https://bailian.console.aliyun.com/

通义灵码_智能编码助手面向用户上线个人和企业版产品

https://tongyi.aliyun.com/lingma/pricing?userCode=jl9als0w

云工开物_阿里云高校计划助力高校科研与教育加速。

https://university.aliyun.com/mobile?userCode=jl9als0w

无影云电脑个人版简单易用、安全高效的云上桌面服务

https://www.aliyun.com/product/wuying/gws/personal_edition?userCode=jl9als0w

云服务器ECS省钱攻略五种权益,限时发放,不容错过

https://www.aliyun.com/daily-act/ecs/ecs_trial_benefits?userCode=jl9als0w

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/11300.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

本地部署免费开源助手Ollama

Ollama 安装 安装ollama 官方网站&#xff1a;https://ollama.com/download 2. 安装成功 3. 运行模型 模型&#xff1a;https://ollama.com/library 运行&#xff1a; ollama run llama3.2:3b Mac 、Linux 版本安装类似。 Open-WebUI界面安装 openwebui官网&#xff1a;http…

three.js杂记

空间 - 位置变换&#xff1a; // 假设有一个Three.js的对象: object3D // 存储矩阵位置 const matrix object3D.matrix.clone(); const matrixArray matrix.toArray(); // 转换为数组 // 之后&#xff0c;当你需要恢复位置时 object3D.matrix.fromArray(matrixArray); …

通过DNS服务器架构解释DNS请求过程

在前面的章节,这里,基于PCAP数据包和RFC文档详细介绍了DNS请求和响应的每个字段的含义。但是在现实的网络世界中,DNS请求和响应的数据包是怎么流动的,会经过哪些设备。本文将着重说明一下目前网络空间中DNS请求和响应的流动过程。 当前网络空间中比较常见DNS请求的流程如下…

HBase使用create创建表时报错ERROR: KeeperErrorCode = NoNode for /hbase/master

场景模拟 1. 正常情况 模拟ERROR: KeeperErrorCode NoNode for /hbase/master错误场景。 正常情况下创建hbase表如下图所示。 2. 删除hbase集群的zk节点 进入zookeeper客户端。 zkCli.sh删除hbase的zk节点。 deleteall /hbase退出zookeeper客户端。 quit3. 重启hbase集…

软件分享丨火绒应用商店

【资源分享】 资源名&#xff1a;火绒应用商店 官方网址&#xff1a;点击跳转 火绒应用商店是由火绒安全推出的一款独立软件。它提供了海量的应用程序&#xff0c;涵盖办公、社交、游戏、视频、工具等多种领域和类别&#xff0c;方便用户轻松找到所需的应用并进行一键下载安装…

在线考试系统demo页面

<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>在线考试系统</title><link rel"styl…

从0到1基于LangChain制作一个AI猫娘

前言&#xff1a; 看到B站上的AIVtuber的项目落地了&#xff0c;就心血来潮想制作一个AI的猫娘供自己使用&#xff0c;顺便出一个简单的教程&#xff0c;跳过理论&#xff0c;直接实践&#xff0c;作者也还在学习摸索中&#xff0c;所以有错误可以直接在评论区指正。&#xff0…

前端---高效工具(一) : NVM的使用

一、NVM用途 方便快捷 管理和切换各个 node版本。现在前端项目Vue2与Vue3很多项目要求的node版本不一致导致的。 二、安装 如果有安装nodejs&#xff0c;按一下步骤清理环境 1.卸载应用程序的 nodejs 2.删除环境变量中nodejs的配置 3.删除C:\Users\Administrator 中最下面…

反序列化漏洞浅析

Apache InLong 是开源的高性能数据集成框架&#xff0c;支持数据接入、数据同步和数据订阅&#xff0c;同时支持批处理和流处理&#xff0c;方便业务构建基于流式的数据分析、建模和应用。浅析Apache InLong < 1.12.0 JDBC反序列化漏洞&#xff08;CVE-2024-26579&#xff0…

三周精通FastAPI:39 用FastAPI CLI命令行程序管理FastAPI项目

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/fastapi-cli/ FastAPI CLI FastAPI CLI 是一个命令行程序&#xff0c;你可以用它来部署和运行你的 FastAPI 应用程序&#xff0c;管理你的 FastAPI 项目&#xff0c;等等。 当你安装 FastAPI 时&#xff08;例如使用 p…

Bean实例化

Bean有3种实例化方法 1.通过无参构造方法实例化 假如我们有以下结构&#xff1a; 这里我们在无参构造方法种打印字符串&#xff1a; 然后我们运行 可知&#xff0c;IoC管理bean进行实例化的时候是通过无参构造方法实例化的。 2.静态工厂实例化 假设我们有以下配置文件&…

【网络安全】线程安全分析及List遍历

未经许可,不得转载。 文章目录 线程线程安全问题遍历List的方式方式一方式二方式三方式四(Java 8)方式五(Java 8 Lambda)遍历List的同时操作ListVector是线程安全的?使用线程安全的CopyOnWriteArrayList使用线程安全的List.forEach线程 线程是程序执行的最小单位。一个程…

ReactPress 安装指南:从 MySQL 安装到项目启动

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 ReactPress 是一个基于 React 的开源发布平台&#xff0c;适用于搭建博客、网站或内容管理系统&#xff08;CMS&#xff09;。本文将详细介绍如何安装 ReactPress&#xff0c;包括…

caozha-whois(域名Whois查询源码)

caozha-whois&#xff0c;是一个采用原生PHP写的域名Whois查询模块&#xff0c;支持全球大部分域名的whois查询&#xff0c;支持中文域名在内的多种域名后缀&#xff0c;包括&#xff1a;.com&#xff0c;.net&#xff0c;.cn&#xff0c;.com.cn&#xff0c;.org&#xff0c;.…

2024 年(第 7 届)“泰迪杯”数据分析技能赛A 题 自动化生产线数据分析 完整代码结果分享

一、背景 随着信息技术的快速发展&#xff0c;工业自动化领域的智能控制系统日益完善。自动化生产线能够独立完成从物料输送到元件抓取&#xff0c;再到产品安装和质量检验的各个环节&#xff0c;这不仅极大提升了制造效率和产品质量&#xff0c;也有效降低了生产成本。 为了使…

探索Python自动化新境界:Invoke库的神秘面纱

文章目录 **探索Python自动化新境界&#xff1a;Invoke库的神秘面纱**第一部分&#xff1a;背景介绍第二部分&#xff1a;Invoke库是什么&#xff1f;第三部分&#xff1a;如何安装Invoke库&#xff1f;第四部分&#xff1a;Invoke库函数使用方法1. 定义任务2. 执行任务3. 任务…

Qt_day4_Qt_UI设计

目录 Qt_UI设计 1. Designer 设计师&#xff08;掌握&#xff09; 2. Layout 布局&#xff08;重点&#xff09; 2.1 基本使用 2.2 高级用法 2.3 代码布局&#xff08;了解&#xff09; 3. Designer与C的关系&#xff08;熟悉&#xff09; 4. 基本组件&#xff08;掌握…

conda和conda的常用命令

目录 一、什么是conda 1. conda的定义和作用 2. conda的特点 3. conda与pip的区别 二、conda的常用命令 1. 环境管理 2.包管理 3. 查看信息 4. 清理和维护 5. 频道(channel)管理 6. 导出和复制环境 7. 加速相关(镜像) 一、什么是conda 1. conda的定义和作用 2. co…

基于STM32通过TM1637驱动4位数码管详细解析(可直接移植使用)

目录 1. 单位数码管概述 2. 对应编码 2.1 共阳数码管 2.2 共阴数码管 3. TM1637驱动数码管 3.1 工作原理 3.1.1 读键扫数据 3.1.2 显示器寄存器地址和显示模式 3.2 时序 3.2.1 指令数据传输过程&#xff08;读案件数据时序&#xff09; 3.2.2 写SRAM数据…

16.UE5拉怪机制,怪物攻击玩家,伤害源,修复原视频中的BUG

2-18 拉怪机制&#xff0c;怪物攻击玩家、伤害源、黑板_哔哩哔哩_bilibili 目录 1.实行行为树实现拉怪机制 1.1行为树黑板 1.2获取施加伤害对象&#xff08;伤害源&#xff09; 2.修复原视频中&#xff0c;第二次攻击怪物后&#xff0c;怪物卡在原地不动的BUG 3.怪物攻击玩…