js 简单圆盘时钟

2023-11-06 09:31
文章标签 简单 时钟 js 圆盘

本文主要是介绍js 简单圆盘时钟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现一个简单的圆盘时钟

预览图:

在这里插入图片描述

代码:

css:

<style>.disc {position: relative;margin: 200px auto;width: 300px;height: 300px;border: 1px solid #000;border-radius: 50%;}.axis {position: absolute;top: 150px;left: 150px;transform: translate(-50%, -50%);width: 10px;height: 10px;border-radius: 50%;background-color: #000;}.hourHand {position: absolute;top: 150px;left: 147px;width: 6px;height: 80px;background-color: #000;transform-origin: 3px 0;}.minuteHand {position: absolute;top: 150px;left: 148px;width: 4px;height: 110px;background-color: #000;transform-origin: 2px 0;}.secondHand {position: absolute;top: 150px;left: 149px;width: 2px;height: 130px;background-color: #000;transform-origin: 1px 0;}.scale {position: absolute;top: 0;left: 150px;transform-origin: 2.5px 150px;width: 2px;height: 5px;background-color: #000;}.num {position: absolute;top: 15px;left: 150px;width: 20px;height: 20px;color: 16px;text-align: center;line-height: 20px;transform-origin: 50% 135px;}.num span {display: block;transform-origin: 50% 50%;}</style>

html:

	 <div class="disc"><div class="axis"></div><div class="hourHand"></div><div class="minuteHand"></div><div class="secondHand"></div></div>

js:

	 // 获取元素var disc = document.getElementsByClassName('disc')[0];var hourHand = document.getElementsByClassName('hourHand')[0];var minuteHand = document.getElementsByClassName('minuteHand')[0];var secondHand = document.getElementsByClassName('secondHand')[0];var scale = document.getElementsByClassName('scale');// 生成刻度for (var i = 0; i < 60; i++) {var scale = document.createElement('div');scale.classList.add('scale');scale.style.transform = `translate(-50%) rotate(${i*6}deg)`;disc.appendChild(scale);scale.style.transform = `translate(-50%) rotate(${i*6}deg)`;if (i % 5 === 0) {scale.style.width = 4 + 'px';scale.style.height = 12 + 'px';}}// 生成数字for (var i = 0; i < 12; i++) {var num = document.createElement('div');var numx = document.createElement('span');num.classList.add('num');num.style.transform = `translate(-50%) rotate(${i*30+30}deg)`;numx.style.transform = `rotate(${-i*30-30}deg)`;numx.innerHTML = i + 1;disc.appendChild(num);num.appendChild(numx);}// 浏览器刚打开就显示,不会停顿var h = getTime().hours;h = h > 12 ? h - 12 : h;hourHand.style.transform = `rotate(${h*30-180+(getTime().minute*0.5)}deg)`;minuteHand.style.transform = `rotate(${getTime().minute*6-180}deg)`;secondHand.style.transform = `rotate(${getTime().second*6-180}deg)`;// 定时器,每过一秒执行一次setInterval(function() {var h = getTime().hours;h = h > 12 ? h - 12 : h;hourHand.style.transform = `rotate(${h*30-180+(getTime().minute*0.5)}deg)`;minuteHand.style.transform = `rotate(${getTime().minute*6-180}deg)`;secondHand.style.transform = `rotate(${getTime().second*6-180}deg)`;}, 1000)// 函数:获取时间function getTime() {var date = new Date();var year = date.getFullYear();var month = date.getMonth();month = month < 10 ? '0' + month : month;var day = date.getDate();day = day < 10 ? '0' + day : day;var week = date.getDay();var weeks = ['日', '一', '二', '三', '四', '五', '六'];var weekZn = weeks[week];var hou = date.getHours();hou = hou < 10 ? '0' + hou : hou;var min = date.getMinutes();min = min < 10 ? '0' + min : min;var sec = date.getSeconds();sec = sec < 10 ? '0' + sec : sec;return {year: year,month: month,day: day,week: weekZn,hours: hou,minute: min,second: sec}}

这篇关于js 简单圆盘时钟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/355807

相关文章

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder