时钟之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);
}
实现效果
相关文章:
时钟之CSS+JS版
写在前面 此版本绘制的时钟基于CSSJS模式。 优点操作简单,缺点当然是不够灵活。下一篇会基于HTML5的canvas标签,使用JS绘制。会更灵活,元素更加丰富。 HTML代码 <div class"box"><article class"clock"><…...
ubuntu18.04 配置安卓编译环境
目前有个项目,验收时有个要求是在linux中进行编译打包生成apk文件。我平时都是在windows环境android studio中进行打包的,花了半天时间研究了一下,记录如下: 安装安卓sdk cd /opt wget https://dl.google.com/android/reposito…...
pycharm分支提交操作
一、Pycharm拉取Git远程仓库代码 1、点击VCS > Get from Version Control 2、输入git的url,选择自己的项目路径 3、点击Clone,就拉取成功了 默认签出分支为main 选择develop签出即可进行开发工作 二、创建分支(非必要可以不使用…...
ESP32-C3 开发笔记 之 arduino 正常上传 串口乱码2024/11/15
ESP32-C3 开发笔记 之 arduino 正常上传 串口乱码 ESP32-C3 开发笔记 之 arduino 正常上传程序 但是打开串口,串口快速刷新 芯片一直处于重启状态 找了很久的原因没找到,用Mixly 上传就正常 最后看到这篇 文章https://blog.csdn.net/luooove/article/details/132351398修改了Fl…...
Ubuntu 的 ROS 操作系统 turtlebot3 SLAM仿真
引言 SLAM(同步定位与地图构建)在Gazebo仿真环境中的应用能够模拟真实机器人进行环境建图和导航。通过SLAM仿真,开发者可以在虚拟环境中测试算法,而不必依赖真实硬件,便于调试与优化。 Gazebo提供了多个虚拟环境&…...
2024年11月15日
1.计算机网络 逻辑右移 做加减法 定点乘法 原码乘法运算 一位乘 计组 2.英语六级...
websocket初始化
websocket初始化 前言 上一集我们HTTP的ping操作就可以跑通了,那么我们还有一个协议---websocket,我们在这一集就要去完成我们websocket的初始化。 分析 我们在初始化websocket的之前,我们考虑一下,我们什么时候就要初始化我们…...
uniapp ios app以framwork形式接入sentry
一、下载Sentry mac终端输入:vim Podfile修改Podfile: platform :ios, 11.0 target YourApp douse_frameworks! # This is importantpod Sentry, :git > https://github.com/getsentry/sentry-cocoa.git, :tag > 8.40.1 end执行:pod install下载…...
⾃动化运维利器Ansible-基础
Ansible基础 一、工作原理二、快速入门2.1 测试所有资产的网络连通性2.2 发布文件到被管理节点(资产) 三、资产(被管理节点)3.1 静态资产3.1.1 自定义资产3.1.2 自定义资产的使用3.1.3 资产选择器 四、Ansible Ad-Hoc 命令4.1 模块类型4.1.1 command & shell 模块4.1.2 cop…...
若依笔记(十一):芋道多租户限制与修改
目录 多租户实现 哪些表是多租户的? YudaoTenant自动装载类 租户隔离的sql在哪? 如何修改成无租户隔离 全局修改 表级别 请求RUL级别 芋道比若依多了租户概念,这也是因为它增加很多业务系统,首先后台管理系统肯定是多租户的,这意味着如商城系统的产品管理SPU、库存…...
hive 统计各项目下排名前5的问题种类
实现指定某项目下的数据效果图如下所示: 其中 ABCDE 为前5名的问题种类,其中A问题有124个(出现了124次) 数据说明: 整个数据集 包含很多项目一个项目 包含很多问题一个问题 选项 可认为是 类别值,所有出…...
HBase 安装与基本操作指南
以下是关于 Apache HBase 安装、配置以及简单操作的详细指南: HBase 简介 Apache HBase 是一个基于 Hadoop 的分布式数据库,擅长处理大规模、结构化的海量数据。它采用行列式存储方式,与 Hadoop 和 HDFS 紧密结合,是支持大数据实…...
Spring Boot应用中的文件压缩与解压技术实践
在构建Spring Boot应用时,文件压缩与解压是处理大量数据、优化存储和传输速度的常用技术。本文旨在深入探讨Spring Boot应用中文件压缩与解压的实现方法,包括常见压缩算法的选择、Spring Boot中的实现策略以及实际应用场景中的最佳实践。 引言 随着大数…...
D69【 python 接口自动化学习】- python 基础之数据库
day69 Python 执行 SQL 语句 学习日期:20241115 学习目标: MySQL 数据库﹣- Python连接redis 学习笔记: redis数据库的用途 使用Python访问redis数据库 使用Python对redis数据库进行读写操作 总结 1. redis是一款高性能的键…...
410. 分割数组的最大值
目录 题目解法 题目 给定一个非负整数数组 nums 和一个整数 k ,你需要将这个数组分成 k 个非空的连续子数组,使得这 k 个子数组各自和的最大值 最小。 返回分割后最小的和的最大值。 子数组 是数组中连续的部份。 解法 int splitArray(vector<in…...
Azure pipeline 通过git命令修改文件
步骤及解释 设置git用户名 git config --global user.email "useremail" git config --global user.name "username" 获取branch $branch "$(Build.SourceBranch)" -replace "refs/heads/" "$(Build.SourceBranch)"&a…...
LeetCode74. 搜索二维矩阵(2024冬季每日一题 6)
给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…...
BPMN 2.0详细介绍
BPMN 2.0(Business Process Model and Notation 2.0)是一个标准化的图形化建模语言,用于描述业务流程和工作流。它是由 Object Management Group (OMG) 制定的,旨在提供一种标准化的方式,帮助企业和开发者清晰地建模、…...
web——upload-labs——第四关——.htaccess文件绕过
先尝试直接上传一个普通的一句话木马 显示此文件不允许上传,这道题并没有提示不允许上传什么后缀的文件,经过尝试,基本上所有后缀能够被解析为php语句执行的文件都不能成功上传。试试正常的图片能不能上传: 我们再来试试图片马能不…...
36.矩阵格式的等差数列 C语言
第一行,每个数差2,之后是3、4、5,最后一行是10 仅仅是练习目的 #define _CRT_SECURE_NO_WARNINGS // 禁用在 Visual Studio 中有关不安全函数的警告 #include <stdio.h> // 引入标准输入输出库int main() {int i; // 外层循环的变量…...
NotebookLM权限审计日志难追溯?手把手教你启用VPC Service Controls + Cloud Logging Query Builder构建实时越权预警看板
更多请点击: https://intelliparadigm.com 第一章:NotebookLM权限控制设置 NotebookLM 是 Google 推出的基于用户上传文档进行 AI 辅助理解与生成的实验性工具,其权限模型默认采用 Google 账户体系集成,但需主动配置以满足团队协…...
【独家首发】NotebookLM语义搜索底层架构图谱(基于2024 Q2最新API逆向分析,含7层向量映射逻辑)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM语义搜索功能全景概览 核心能力定位 NotebookLM 的语义搜索并非传统关键词匹配,而是基于用户上传文档(PDF、TXT、Google Docs)构建的私有知识图谱进行上下…...
【Gin】中间件练习题
路由组中间件题目描述 创建一个 /admin 路由组,给它单独加一个鉴权中间件,其他接口不受影响。规则:请求头带 token: admin123 才允许访问否则返回 401 无权限输出示例无 token:{"code":401,"msg":"无权限…...
Bubble Navigation实战:构建现代化电商App导航系统的终极指南
Bubble Navigation实战:构建现代化电商App导航系统的终极指南 【免费下载链接】bubble-navigation 🎉 [Android Library] A light-weight library to easily make beautiful Navigation Bar with ton of 🎨 customization option. 项目地址…...
TVA智能体范式的工业视觉革命(10)
重磅预告:本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容,该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...
Linux依赖冲突回溯生产排障流程
Linux依赖冲突回溯生产排障流程这是一篇面向中级 Linux 使用者的技术文章,主题聚焦在依赖冲突回溯,重点讨论库版本关系、安装失败和升级影响。在真实生产环境中,依赖冲突回溯相关问题往往不会以单一错误形式出现,而是混杂在日志、…...
NotebookLM新闻传播研究落地全图谱(2024最新实证报告)
更多请点击: https://kaifayun.com 第一章:NotebookLM新闻传播研究的范式演进与学科定位 NotebookLM 作为 Google 推出的面向研究者的 AI 助手,其核心设计理念——以用户上传文档为知识锚点、通过引用溯源生成可信响应——正悄然重构新闻传播…...
【技术解析】从点测量到全场感知:DIC三维应变测量如何革新传统应变片测试范式
1. 从点到面的技术革命:为什么我们需要全场应变测量? 记得我第一次接触材料力学测试时,导师让我用传统应变片测量一块铝合金板的拉伸变形。我花了整整三天时间,在试样上贴了二十多个应变片,结果数据还是支离破碎。那时…...
EFFACT架构:全同态加密硬件加速的创新设计
1. EFFACT架构概述:当硬件设计遇上全同态加密在密码学加速器的世界里,我们一直在寻找一个平衡点——如何在有限的芯片面积和功耗预算下,处理那些看似无解的复杂计算?EFFACT架构的诞生,正是为了解决全同态加密ÿ…...
从失败案例看全球化内容服务的合规架构与自动化风控实践
1. 项目概述与背景解析最近在和一些做全球化内容分发或者跨国协作项目的朋友交流时,大家普遍会提到一个词:“内容合规性审查”。这听起来像是一个法务或者运营的术语,但对我们这些搞技术、做开发的人来说,它背后其实是一整套复杂的…...
