代码块:

  1 <!DOCTYPE html>
2 <html lang="zh-hans">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <meta http-equiv="X-UA-Compatible" content="ie=edge">
7 <title>js仿抖罗盘时钟</title>
8 <style>
9 *{
10 margin:0;
11 padding:0
12 }
13 html,body{
14 width:100%;
15 height:100%;
16 background-color:#000;
17 overflow:hidden
18 }
19 #clock{
20 position:relative;
21 width:100%;
22 height:100%;
23 background:#000
24 }
25 .label{
26 display:inline-block;
27 color:#4d4d4d;
28 text-align:center;
29 padding:0 5px;
30 font-size:19px;
31 transition:left 1s,top 1s;
32 transform-origin:0% 0%
33 }
34 </style>
35 </head>
36 <body>
37 <div id="clock"></div>
38 <script>
39 var monthText=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
40 var dayText=["零一号","零二号","零三号","零四号","零五号","零六号","零七号","零八号","零九号","十号","十一号","十二号","十三号","十四号","十五号","十六号","十七号","十八号","十九号","二十号","二十一号","二十二号","二十三号","二十四号","二十五号","二十六号","二十七号","二十八号","二十九号","三十号","三十一号"];
41 var weekText=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
42 var hourText=["零点","零一点","零两点","零三点","零四点","零五点","零六点","零七点","零八点","零九点","零十点","十一点","十二点","十三点","十四点","十五点","十六点","十七点","十八点","十九点","二十点","二十一点","二十二点","二十三点"];
43 var minuteText=["零一分","零二分","零三分","零四分","零五分","零六分","零七分","零八分","零九分","零十分","十一分","十二分","十三分","十四分","十五分","十六分","十七分","十八分","十九分","二十分","二十一分","二十二分","二十三分","二十四分","二十五分","二十六分","二十七分","二十八分","二十九分","三十分","三十一分","三十二分","三十三分","三十四分","三十五分","三十六分","三十七分","三十八分","三十九分","四十分","四十一分","四十二分","四十三分","四十四分","四十五分","四十六分","四十七分","四十八分","四十九分","五十分","五十一分","五十二分","五十三分","五十四分","五十五分","五十六分","五十七分","五十八分","五十九分","六十分"];
44 var secondsText=["零一秒","零二秒","零三秒","零四秒","零五秒","零六秒","零七秒","零八秒","零九秒","零十秒","十一秒","十二秒","十三秒","十四秒","十五秒","十六秒","十七秒","十八秒","十九秒","二十秒","二十一秒","二十二秒","二十三秒","二十四秒","二十五秒","二十六秒","二十七秒","二十八秒","二十九秒","三十秒","三十一秒","三十二秒","三十三秒","三十四秒","三十五秒","三十六秒","三十七秒","三十八秒","三十九秒","四十秒","四十一秒","四十二秒","四十三秒","四十四秒","四十五秒","四十六秒","四十七秒","四十八秒","四十九秒","五十秒","五十一秒","五十二秒","五十三秒","五十四秒","五十五秒","五十六秒","五十七秒","五十八秒","五十九秒","六十秒"];
45 var clock;var monthList=[];
46 var dayList=[];
47 var weekList=[];
48 var hourList=[];
49 var minuteList=[];
50 var secondsList=[];
51 var isCircle=false;
52 var textSet=[[monthText,monthList],[dayText,dayList],[weekText,weekList],[hourText,hourList],[minuteText,minuteList],[secondsText,secondsList]];
53 window.onload=function(){
54 init();
55 setInterval(function(){
56 runTime();
57 },100);
58 changePosition();
59 setTimeout(function(){
60 changeCircle();
61 },2000);
62 }
63 function init(){
64 clock=document.getElementById('clock');
65 for(var i=0;i<textSet.length;i++){
66 for(var j=0;j<textSet[i][0].length;j++){
67 var temp=createLabel(textSet[i][0][j]);
68 clock.appendChild(temp);textSet[i][1].push(temp);
69 }
70 }
71 }
72 function createLabel(text)
73 {
74 var div=document.createElement('div');
75 div.classList.add('label');
76 div.innerText=text;return div;
77 }
78 function runTime(){
79 var now=new Date();
80 var month=now.getMonth();
81 var day=now.getDate();
82 var week=now.getDay();
83 var hour=now.getHours();
84 var minute=now.getMinutes();
85 var seconds=now.getSeconds();
86 initStyle();
87 var nowValue=[month,day-1,week,hour,minute,seconds];
88 for(var i=0;i<nowValue.length;i++){
89 var num=nowValue[i];
90 textSet[i][1][num].style.color='#fff';
91 }
92 if(isCircle){
93 var widthMid=document.body.clientWidth/2;
94 var heightMid=document.body.clientHeight/2;
95 for(var i=0;i<textSet.length;i++){
96 for(var j=0;j<textSet[i][0].length;j++){
97 var r=(i+1)*35+50*i;
98 var deg=360/textSet[i][1].length*(j-nowValue[i]);
99 var x=r*Math.sin(deg*Math.PI/180)+widthMid;
100 var y=heightMid-r*Math.cos(deg*Math.PI/180);
101 var temp=textSet[i][1][j];
102 temp.style.transform='rotate('+(-90+deg)+'deg)';
103 temp.style.left=x+'px';
104 temp.style.top=y+'px';
105 }
106 }
107 }
108 }
109 function initStyle(){
110 var label=document.getElementsByClassName('label');
111 for(var i=0;i<label.length;i++){
112 label[i].style.color='#4d4d4d';
113 }
114 }
115 function changePosition(){
116 for(let i=0;i<textSet.length;i++){
117 for(let j=0;j<textSet[i][1].length;j++){
118 let tempX=textSet[i][1][j].offsetLeft+"px";
119 let tempY=textSet[i][1][j].offsetTop+"px";
120 setTimeout(function(){
121 textSet[i][1][j].style.position="absolute";
122 textSet[i][1][j].style.left=tempX;textSet[i][1][j].style.top=tempY;
123 },50);
124 }
125 }
126 }
127 function changeCircle(){
128 isCircle=true;
129 clock.style.transform="rotate(90deg)";
130 }
131 </script>
132 </body>
133 </html>

效果:

HTML 罗盘式时钟的更多相关文章

  1. python tkinter module的用法

    tkinter windows下从python3.2版本之后是自动安装的. python3.3之后的引入方式: >>> import _tkinter>>> imp ...

  2. linux4.1.36 解决 SPI 时钟找不到 不生成设备 device

    最初的问题是 编译内核添加了 spi 支持,配置了 board 后,加载25q64驱动不执行probe 函数. 然后发现是,spi-s3c24xx.c 中的 probe 没有执行完就退出了 没有生成 ...

  3. [转] STM32各种时钟的区别

    [原创]:http://m.oschina.net/blog/129357 我在原创的基础又从另一位博主处引用了一些内容. 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是 ...

  4. [转载]:STM32为什么必须先配置时钟再配置GPIO

    转载来源 :http://blog.csdn.net/fushiqianxun/article/details/7926442 [原创]:我来添两句,就是很多同学(包括我)之前搞低端单片机,到了stm ...

  5. 理解Java对象的交互:时钟显示程序

    实现: 结构: 对象:时钟  - 对象:小时                 - 对象:分钟 小时和分钟具有相同属性(值,上限),可以用一个类Display来定义这两个对象: 但是两者之间又具有联系( ...

  6. [JS,Canvas]日历时钟

    [JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...

  7. 浅谈时钟的生成(js手写代码)

    在生成时钟的过程中自己想到布置表盘的写法由这么几种: 当然利用那种模式都可以实现,所以我们要用一个最好理解,代码有相对简便的方法实现 1.利用三角函数 用js在三角函数布置表盘的过程中有遇见到这种情况 ...

  8. Linux(Unix)时钟同步ntpd服务配置方法

    http://xu20cn.blog.51cto.com/274020/69689 假定时钟服务器IP地址为:192.168.0.1 服务器端配置: 1:置/etc/ntp.conf文件内容为: se ...

  9. S5PV210_时钟系统

    1.S5PV210的时钟获得:外部晶振+内部时钟发生器+内部PLL产生高频时钟+内部分频器分频 S5PV210外部有4个W晶振接口,可以根据需要来决定在哪里接晶振.接了晶振之后上电相应的模块就能产生振 ...

随机推荐

  1. 学习了解PHP中的SeasLog日志扩展

    今天来学习的扩展是和日志相关的一个扩展,对于 PHP 的日志应用来说,除了本身自带的 error_log() . syslog() 之外,在大多数的框架中还会经常见到 monolog 的踪影.当然,我 ...

  2. C# MVC 实现 ajax 跨域

    dataup.js$(function() {    $.ajax({        url: "http://localhost:1266/test/t",        dat ...

  3. php 日期相关的类 DateInterval DateTimeZone DatePeriod

    * DateInterval <?php /** * Created by PhpStorm. * User: Mch * Date: 7/18/18 * Time: 21:30 */ $dat ...

  4. AT3611-Tree MST【点分治,最小生成树】

    正题 题目链接:https://www.luogu.com.cn/problem/AT3611 题目大意 给出\(n\)个点的一棵树. 现在有一张完全图,两个点之间的边权为\(w_x+w_y+dis( ...

  5. 如何借助 JuiceFS 为 AI 模型训练提速 7 倍

    背景 海量且优质的数据集是一个好的 AI 模型的基石之一,如何存储.管理这些数据集,以及在模型训练时提升 I/O 效率一直都是 AI 平台工程师和算法科学家特别关注的事情.不论是单机训练还是分布式训练 ...

  6. 微服务Cloud整体聚合工程创建过程

    1.父工程创建及使用 使用idea开发工具,选择File-new- project ,在选项中选择Maven工程,选择jdk版本1.8,勾选maven-archetype-site,点击next,输入 ...

  7. 极简SpringBoot指南-Chapter00-学习SpringBoot前的基本知识

    仓库地址 w4ngzhen/springboot-simple-guide: This is a project that guides SpringBoot users to get started ...

  8. 题解 「ZJOI2018」历史

    题目传送门 Description 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的小说,这本小说的架空世界引起了她的兴趣. 这个世界有 \(n\) 个城市,这 \(n\) 个城市被恰 ...

  9. mysql update语句的执行流程是怎样的

    update更新语句流程是怎么样的 update更新语句基本流程也会查询select流程一样,都会走一遍. update涉及更新数据,会对行加dml写锁,这个DML读锁是互斥的.其他dml写锁需要等待 ...

  10. silky微服务快速开始

    项目介绍 Silky框架旨在帮助开发者在.net平台下,通过简单代码和配置快速构建一个微服务开发框架. Silky 通过 .net core的主机来托管微服务应用.通过 Asp.Net Core 提供 ...