时钟之CSS+JS版

写在前面

此版本绘制的时钟基于CSS+JS模式。

优点操作简单,缺点当然是不够灵活。下一篇会基于HTML5的canvas标签,使用JS绘制。会更灵活,元素更加丰富。

HTML代码

<div class="box"><article class="clock"><!--  每个指针都需要一个 *-container容器 --><div class="hours-container"><div class="hours"></div></div><div class="minutes-container"><div class="minutes"></div></div><div class="seconds-container"><div class="seconds"></div></div></article>
</div>

CSS代码

.box {width: 10rem;height: 10rem;background: rgb(205,205,205, .1);border-radius: 1rem;margin: 5% auto;display: flex;justify-content: center;align-items: center;
}
/* .box使用 Flex 布局方式,并且使其中的 .clock水中、垂直方向都居中。*/
.clock {width: 10rem;height: 10rem;background: rgb(244, 244, 244, .1) url(../img/clock.png) no-repeat center;background-size: cover;background-size: 100%;border-radius: 50%;position: relative;
}
/*添加中心轴:使用 CSS3 中的 伪元素 为时钟添加实心小圆点,指针都围着这个点转。*/
.clock:after {content: "";  /* 这句 content: ''; 是必须的,不然这个伪元素不会显示,即使指定了宽度和高度。 */width: 1rem;height: 1rem;background: #000;border-radius: 50%;position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);   /* !!!向左上移动自身的50% */z-index: 10;  /* 是为了使这个小圆点在视图的最上层,遮挡住指针交叉的地方 */
}
/*由于相对定位是从元素的左上角开始计算的,所以 top: 50%; left: 50%; 不能使这个小圆点在 Clock 的中心,使用 transform: translate(-50%,-50%); 向左上方移动自身宽度或高度的 50%*//*指针容器: 容器被放置在 Clock 的上方*/
.hours-container,.minutes-container,.seconds-container {position: absolute;top: 0;right: 0;bottom: 0;left: 0;
}
/*添加指针:设置指针样式*/
.hours {width: 3%;height: 20%;background: rgb(0, 0, 0, .8);transform-origin: 50% 100%; /* transform-origin: 50% 90%; 规定指针旋转的位置为:X 方向的中心线 和 Y 方向的 90% 处这条线的交叉点。*/position: absolute;top: 35%;left: 48.5%;
}
.minutes {width: 2%;height: 30%;background: rgb(13, 2, 223, .8);transform-origin: 50% 100%; position: absolute;top: 24%;left: 49%;}
.seconds {width: 1%;height: 40%;background: rgb(255, 0, 0, .8);transform-origin: 50% 100%;position: absolute;top: 20%;left: 49.5%;
}@keyframes rotate {100% {transform: rotateZ(360deg);}
}

JS代码

function frame() {const now = new Date();const hours = now.getHours();const minutes = now.getMinutes();const seconds = now.getSeconds();const sDeg = (seconds % 60) * 6;// 描述实际对应度数const mDeg = (minutes % 60) * 6 + (seconds % 60) * 6 / 360 * 6;// 分针实际对应度数 + 秒针跑过折算度数const hDeg = (hours > 12 ? hours % 24 : hours % 12) * 30 + (minutes % 60) * 6 / 360 * 30;// 时针实际对应度数 + 分针跑过折算度数document.querySelector('.seconds-container').style.transform = "rotate(" + sDeg + "deg)";document.querySelector('.minutes-container').style.transform = "rotate(" + mDeg + "deg)";document.querySelector('.hours-container').style.transform = "rotate(" + hDeg + "deg)";
}
window.onload = function() {frame();setInterval(frame, 1000);
}

实现效果

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elastic Agent:可灵活地在任何地方发送和处理任何数据

作者&#xff1a;来自 Elastic Nima Rezainia Elastic Agent 是一款功能强大且用途广泛的工具&#xff0c;可用于从各种数据源&#xff08;包括自定义用户应用程序&#xff09;收集日志和指标。现在&#xff0c;Elastic Agent 提供了无与伦比的灵活性&#xff0c;可以将数据准确…

Android CCodec Codec2 (二一)InputBuffers

CCodec使用CCodecBuffers来对输入/输出端口上的buffer进行管理&#xff0c;这一篇文章我们将一起了解InputBuffers&#xff0c;也就是输入端口的buffer管理方法。 1、CCodecBuffers CCodecBuffers是端口管理的基类&#xff0c;它抽象了输入端口管理和输出端口管理的通用方法&a…

JDBC-Mysql 时区问题详解

目录 一、前置准备 1.1 版本号列表 1.2 Sql脚本 1.3 application.yaml配置 1.4 数据库时区设置 二、java Date类型与&#xff08;jdbcType&#xff09;TIMESTAMP类型的转换 2.1 jdbc对serverTimeZone的处理 2.2 java Date转&#xff08;jdbcType&#xff09;TIMESTAMP …

LC12:双指针

文章目录 125. 验证回文串 本专栏记录以后刷题碰到的有关双指针的题目。 125. 验证回文串 题目链接&#xff1a;125. 验证回文串 这是一个简单题目&#xff0c;但条件判断自己写的时候写的过于繁杂。后面参考别人写的代码&#xff0c;首先先将字符串s利用s.toLowerCase()将其…

H5页面多个视频如何只同时播放一个?

目录 背景1. 首先介绍下 muted 属性2. 监听播放和暂停操作3. 视频播放完毕后返回桌面&#xff0c;再进入H5页面发现视频封面丢失置灰解决思路&#xff1a; 背景 页面模块同时有个四个视频模块&#xff0c;发现可以同时播放四个视频&#xff0c;但是理想的是每次只播放一个。 …

【环境配置】macOS配置jdk与maven

配置jdk与maven 配置jdk与切换java版本命令 maven安装与配置国内镜像源 用到的命令 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls ➜ jdk-1.8.jdk jdk-11.jdk# 查看路径 pwd ➜ /Library/Java/JavaVirtualMachines# 打开环境变量配置文件 vi &…

基于汇编语言的贪吃蛇程序

摘要 在我们空闲的时候&#xff0c;我们可以用一些我们学过的知识编一些东西&#xff0c;通过这些东西我们可以学习到汇编语言综合应用程序设计方法&#xff0c;还可以提高汇编语言实际应用能力&#xff0c;充分了解计算机硬件和软件&#xff0c;完成理论到实践的推进过程。这…

Qt文件目录操作

文件目录操作相关类 Qt 为文件和目录操作提供了一些类&#xff0c;利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类包括以下几个&#xff1a; QCoreApplication&#xff1a;用于提取应用程序路径&#xff0c;程序名等文件信息&#xff1b;QFile&#x…

2024 CCF中国开源大会“开源科学计算与系统建模openSCS”分论坛成功举办

11月9日&#xff0c;2024 中国计算机学会&#xff08;CCF&#xff09;中国开源大会“开源科学计算与系统建模openSCS”分论坛在深圳落下帷幕。本次论坛由开源科学计算与系统建模工作委员会、苏州同元软控信息技术有限公司&#xff08;简称“同元软控”&#xff09;、深圳景元数…

基于 PyTorch 从零手搓一个GPT Transformer 对话大模型

一、从零手实现 GPT Transformer 模型架构 近年来&#xff0c;大模型的发展势头迅猛&#xff0c;成为了人工智能领域的研究热点。大模型以其强大的语言理解和生成能力&#xff0c;在自然语言处理、机器翻译、文本生成等多个领域取得了显著的成果。但这些都离不开其背后的核心架…

C++(Day35)

一、学习内容 C绪论 C是C语言的拓充&#xff0c;C包含C的所有属性&#xff0c;换一句话说&#xff0c;C语言的语法在C中都合法。 C语言是面向过程的编程思想。 C语言是面向对象的编程思想。&#xff08;半面向对象&#xff0c;半面向过程&#xff09; 可以说在C中一切皆对象。 …

World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator

https://wago.io/BarneyCS 黄色数字表示需要修的血量。 绿色数字表示停止修血。 红色数字表示修血过量&#xff0c;以及该坍缩星将在大爆炸读条结束前多少秒爆炸。 Numbers in yellow means damage required. Numbers in green means HP is good, dont damage anymore. Numbers…

Elasticsearch retrievers 通常与 Elasticsearch 8.16.0 一起正式发布!

作者&#xff1a;来自 Elastic Panagiotis Bailis Elasticsearch 检索器经过了重大改进&#xff0c;现在可供所有人使用。了解其架构和用例。 在这篇博文中&#xff0c;我们将再次深入探讨检索器&#xff08;retrievers&#xff09;。我们已经在之前的博文中讨论过它们&#xf…

C++清除所有输出【DEV-C++】所有编辑器通用 | 算法基础NO.1

各位小伙伴们&#xff0c;上一期的保留小数位数教学够用一辈子&#xff0c;有不错的点赞量&#xff0c;可我连一个粉丝铁粉都没有&#xff0c;你愿意做我的第一个铁粉吗&#xff1f;OK废话不多说&#xff0c;开始&#xff01; 温故与知心 可能你也学过&#xff0c;且是工作者…

麒麟kysec安全

一、kysec安全框架管理 开启kysec getstatus Copy security-switch --set default Copy 重启系统 reboot Copy 刷新页面&#xff0c;等待几分钟&#xff0c;即可完成文件的扫描。 查看kysec状态 getstatus Copy 切换到管理员身份&#xff08;密码&#xff1a;devuser…

本地 / 网络多绑定用例总结

原文连接&#xff1a;AUTOSAR_EXP_ARAComAPI的7章笔记&#xff08;4&#xff09; 情景设定 在前一节的基础上&#xff0c;假设有类似情景&#xff0c;区别在于服务实例 2 位于与 AP 产品相同以太网的不同 ECU 上&#xff0c;服务消费者及其代理驻留在 AP 产品 ECU 上。因以太网…

Android笔记(三十六):封装一个Matrix从顶部/底部对齐的ImageView

背景 ImageView的scaleType默认显示图片是这样&#xff0c;但是有时候设计稿需求希望图片左右能紧贴着ImageView左右边缘&#xff0c;又不破坏图片的比例&#xff0c;用自带的matrix&#xff0c;centerCrop等都可以满足 但是都会造成图片的某些区域被裁剪了&#xff0c;如果设…

什么是项目完整性管理?

项目完整性管理是一种在项目生命周期中确保项目质量、进度、成本、资源等各方面保持一致性与协调性的系统性方法。它不仅涉及项目的规划与执行&#xff0c;还包括对项目中的各项资源、流程、技术的整合和控制&#xff0c;以保障项目的最终交付质量和效果。随着项目复杂性的提升…

【3D Slicer】的小白入门使用指南四

开源解剖影像浏览工具Open Anatomy Browser使用及介绍 和3D slicer米有太大关系,该工具是网页版影像数据的浏览工具(可以简单理解为网页版的3D slicer) 介绍 ● 开放解剖(OA)浏览器是由神经影像分析中心开发的,基于网络浏览器技术构建的图谱查看器。 ● OA浏览器将解剖模…

如何优化Kafka消费者的性能

要优化 Kafka 消费者性能&#xff0c;你可以考虑以下策略&#xff1a; 并行消费&#xff1a;通过增加消费者组中的消费者数量来并行处理更多的消息&#xff0c;从而提升消费速度。 批量消费&#xff1a;配置 fetch.min.bytes 和 fetch.max.wait.ms 参数来控制批量消费的大小和…