罗盘时钟

用HTML和CSS以及JavaScript实现罗盘时钟。

原理分析:
1.年月日时分秒的定义
2.定时器的使用
3.分钟到小时如何变化
4.定义数组存放内容

效果演示

初始状态
在这里插入图片描述
时间显示
在这里插入图片描述

代码展示

HTML内容

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>罗盘时钟</title><link rel="stylesheet" href="css/style.css"></head>
<body><div id="clock"></div><script src="js/script.js"></script></body>
</html>

style.css内容

* {margin: 0;padding: 0
}html,
body {width: 100%;height: 100%;background-color: #000;overflow: hidden
}#clock {position: relative;width: 100%;height: 100%;background: #000
}.label {display: inline-block;color: #4d4d4d;text-align: center;padding: 0 5px;font-size: 19px;transition: left 1s, top 1s;transform-origin: 0% 0%
}

script.js内容

var monthText = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"];
var dayText = ["一号", "二号", "三号", "四号", "五号", "六号", "七号", "八号", "九号", "十号", "十一号", "十二号", "十三号", "十四号", "十五号", "十六号","十七号", "十八号", "十九号", "二十号", "二十一号", "二十二号", "二十三号", "二十四号", "二十五号", "二十六号", "二十七号", "二十八号", "二十九号", "三十号", "三十一号"
];
var weekText = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
var hourText = ["零点", "一点", "两点", "三点", "四点", "五点", "六点", "七点", "八点", "九点", "十点", "十一点", "十二点", "十三点", "十四点", "十五点","十六点", "十七点", "十八点", "十九点", "二十点", "二十一点", "二十二点", "二十三点"
];
var minuteText = ["一分", "二分", "三分", "四分", "五分", "六分", "七分", "八分", "九分", "十分", "十一分", "十二分", "十三分", "十四分", "十五分", "十六分","十七分", "十八分", "十九分", "二十分", "二十一分", "二十二分", "二十三分", "二十四分", "二十五分", "二十六分", "二十七分", "二十八分", "二十九分", "三十分", "三十一分","三十二分", "三十三分", "三十四分", "三十五分", "三十六分", "三十七分", "三十八分", "三十九分", "四十分", "四十一分", "四十二分", "四十三分", "四十四分", "四十五分", "四十六分","四十七分", "四十八分", "四十九分", "五十分", "五十一分", "五十二分", "五十三分", "五十四分", "五十五分", "五十六分", "五十七分", "五十八分", "五十九分", "六十分"
];
var secondsText = ["一秒", "二秒", "三秒", "四秒", "五秒", "六秒", "七秒", "八秒", "九秒", "十秒", "十一秒", "十二秒", "十三秒", "十四秒", "十五秒", "十六秒","十七秒", "十八秒", "十九秒", "二十秒", "二十一秒", "二十二秒", "二十三秒", "二十四秒", "二十五秒", "二十六秒", "二十七秒", "二十八秒", "二十九秒", "三十秒", "三十一秒","三十二秒", "三十三秒", "三十四秒", "三十五秒", "三十六秒", "三十七秒", "三十八秒", "三十九秒", "四十秒", "四十一秒", "四十二秒", "四十三秒", "四十四秒", "四十五秒", "四十六秒","四十七秒", "四十八秒", "四十九秒", "五十秒", "五十一秒", "五十二秒", "五十三秒", "五十四秒", "五十五秒", "五十六秒", "五十七秒", "五十八秒", "五十九秒", "六十秒"
];
var clock;
var monthList = [];
var dayList = [];
var weekList = [];
var hourList = [];
var minuteList = [];
var secondsList = [];
var isCircle = false;
var textSet = [[monthText, monthList],[dayText, dayList],[weekText, weekList],[hourText, hourList],[minuteText, minuteList],[secondsText, secondsList]
];
window.onload = function() {init();setInterval(function() {runTime();}, 100);changePosition();setTimeout(function() {changeCircle();}, 2000);
}function init() {clock = document.getElementById('clock');for (var i = 0; i < textSet.length; i++) {for (var j = 0; j < textSet[i][0].length; j++) {var temp = createLabel(textSet[i][0][j]);clock.appendChild(temp);textSet[i][1].push(temp);}}
}function createLabel(text) {var div = document.createElement('div');div.classList.add('label');div.innerText = text;return div;
}function runTime() {var now = new Date();var month = now.getMonth();var day = now.getDate();var week = now.getDay();var hour = now.getHours();var minute = now.getMinutes();var seconds = now.getSeconds();initStyle();var nowValue = [month, day - 1, week, hour, minute, seconds];for (var i = 0; i < nowValue.length; i++) {var num = nowValue[i];textSet[i][1][num].style.color = '#fff';}if (isCircle) {var widthMid = document.body.clientWidth / 2;var heightMid = document.body.clientHeight / 2;for (var i = 0; i < textSet.length; i++) {for (var j = 0; j < textSet[i][0].length; j++) {var r = (i + 1) * 35 + 50 * i;var deg = 360 / textSet[i][1].length * (j - nowValue[i]);var x = r * Math.sin(deg * Math.PI / 180) + widthMid;var y = heightMid - r * Math.cos(deg * Math.PI / 180);var temp = textSet[i][1][j];temp.style.transform = 'rotate(' + (-90 + deg) + 'deg)';temp.style.left = x + 'px';temp.style.top = y + 'px';}}}
}function initStyle() {var label = document.getElementsByClassName('label');for (var i = 0; i < label.length; i++) {label[i].style.color = '#4d4d4d';}
}function changePosition() {for (let i = 0; i < textSet.length; i++) {for (let j = 0; j < textSet[i][1].length; j++) {let tempX = textSet[i][1][j].offsetLeft + "px";let tempY = textSet[i][1][j].offsetTop + "px";setTimeout(function() {textSet[i][1][j].style.position = "absolute";textSet[i][1][j].style.left = tempX;textSet[i][1][j].style.top = tempY;}, 50);}}
}function changeCircle() {isCircle = true;clock.style.transform = "rotate(90deg)";
}

获取更多讯息关注我呦!!!

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

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

相关文章

【OpenCV 例程200篇】95. 几何均值滤波器

【OpenCV 例程200篇】95. 几何均值滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 仅噪声存在的空间滤波图像复原 当一幅图像中唯一存在的退化是噪声时&#xff0c;退化模型简化为&a…

MATLAB中有关矩阵特征值和特征向量的计算

在MATLAB语言中&#xff0c;求矩阵的特征值和特征向量需要用到两个函数&#xff1a;eig()、diag() diag():可生成一个对角矩阵 调用eig函数的格式为&#xff1a; [x,y]eig(A) 其中矩阵y的对角线元素存储的是A的所有特征值&#xff0c;且从小到大排列&#xff1b;而矩阵x的每一…

input输入框内容只读

有的时候一些固定的数据只能观看而无法修改&#xff0c;那麽我们如何设置呢&#xff1f; 设置input输入框内容的只读性在此我总结了两个方法。 效果演示 确实进行了选中修改添加文本内容等操作&#xff0c;但是数据始终是无法修改的。 方法一 readonly属性 使用方法 <…

【OpenCV 例程200篇】96. 谐波平均滤波器

【OpenCV 例程200篇】96. 谐波平均滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 仅噪声存在的空间滤波图像复原 当一幅图像中唯一存在的退化是噪声时&#xff0c;退化模型简化为&a…

SQL Server第一次上机操作实例:用sql语句创建BBS数据库、表、约束以及建立其数据库关系图

训练技能点&#xff1a; 学会使用sql语句创建数据库、表、约束、建立数据库关系图 使用到的软件&#xff1a;SQL Server2008 代码如下&#xff1a; use master go if exists(select * from sysdatabases where nameBBS) --判断BBS库是否存在&#xff0c;若存在则先删除drop…

【OpenCV 例程200篇】97. 反谐波平均滤波器

【OpenCV 例程200篇】97. 反谐波平均滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3. 仅噪声存在的空间滤波图像复原 当一幅图像中唯一存在的退化是噪声时&#xff0c;退化模型简化为…

xampp命令行连接MySql数据库

使用xampp工具连接MySql数据库。 对于MySql数据库的操作通常是使用命令行进行有关操作的&#xff08;增删改查&#xff09; 1.打开xampp 2.点击打开MySql后面的Start,同样点击打开Apache后面的Start 这时候MySql服务就打开了 3.接下来打开我们的命令行&#xff0c;点击右边…

【OpenCV 例程 200篇】98. 统计排序滤波器

【OpenCV 例程 200篇】98. 统计排序滤波器 欢迎关注 『OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3.5 统计排序滤波器 统计排序滤波器是空间滤波器&#xff0c;其响应是基于滤波器邻域中的像素值的…

避坑!!!Matlab中文版下载地址、详细讲解Matlab中文版的下载、安装

免费下载windows Matlab2016中文版、Matlab2017中文版、Matlab2018中文版、Matlab2019中文版、Matlab2020中文版 如下图&#xff1a; 下载地址&#xff1a; 百度网盘链接&#xff1a;****&#xff08;请私信或评论我&#xff0c;过不了审&#xff09; 提取码&#xff1a;*…

MySql 查询显示

使用命令行进行查询数据库&#xff0c;查询数据表&#xff0c;查询数据表内容。 1.打开命令行 2.连接MySql数据库 连接成功如下图所示 3.查询显示所有数据库 查询所有数据库 语句&#xff1a; show databases; 4.选择使用的数据库 选择(使用)数据库 语句&#xff1a; use t…

【OpenCV 例程200篇】100. 自适应局部降噪滤波器

【OpenCV 例程200篇】100. 自适应局部降噪滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3.7 自适应局部降噪滤波器 前述滤波器直接应用到图像处理&#xff0c;并未考虑图像本身的特征…

【OpenCV 例程200篇】99. 修正阿尔法均值滤波器

【OpenCV 例程200篇】99. 修正阿尔法均值滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 3.6 修正阿尔法均值滤波器&#xff08;Modified alpha-mean filter&#xff09; 修正阿尔法均值…

Vue 过滤数据

利用hash过滤数据。 效果演示 初始样式 点击 将三种字体分别设置为相对应的颜色&#xff0c;使用hash过滤器&#xff0c;不管点击那个颜色的字体时都会显示成红色。 在开始我们的代码之前请注意&#xff1a; 引入Vue.js架包 代码演示 <!DOCTYPE html> <html la…

SQL Server数据库关系图中,此数据库没有有效所有者......的两种解决办法

导语&#xff1a; 在建立数据库关系图时&#xff0c;你是否遇到了这样得问题&#xff1a;“此数据库没有有效所有者&#xff0c;因此无法安装数据库关系图支持对象。若要继续…”&#xff0c;如下图&#xff1a; 别急&#xff0c;有如下两种方法解决这个问题&#xff1a;&…

【youcans 的 OpenCV 学习课】8. 频率域图像滤波(上)

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】8. 频率域图像滤波&#xff08;上&#xff09; 图像滤波是在尽可能保留图像细节特征的条件下对目标图像的噪声进行抑制&#xff0…

内容添加列表

在输入框输入内容点击Enter按钮时你输入的内容会显示到下方列表中&#xff0c;并且会在内容之后显示出添加的时间。 效果演示 初始样式 输入内容按Enter添加到列表 在程序开始之前请注意&#xff1a; 一定要引入Vue.js架包 代码演示 <!DOCTYPE html> <html lang…

备忘录

用Vue实现备忘录功能。 程序分析&#xff1a; 1.显示时间 2.添加内容 3.删除内容 4.修改内容 5.双向绑定 效果演示 初始样式 点击修改显示内容出现在输入框中 修改之后点击完成 点击删除 看了上述效果有没有心动的感觉呢&#xff1f;&#xff1f;&#xff1f; 在程序开…

【OpenCV 例程 300 篇】101. 自适应中值滤波器

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 100. 自适应局部降噪滤波器 101. 自适应中值滤波器 102. 陷波带阻滤波器的传递函数 【youcans 的 OpenCV 例程 300 篇】101. 自适应中值滤波器 3.8 自适应中值滤波器&am…

SQL Server 2008R2安装详细教程(附安装包)

许多人都在苦恼如何安装SQL server&#xff0c;或者找不着安装包&#xff0c;那么这篇文章将带您避坑&#xff0c;解决您的烦恼 安装包如下&#xff1a; 云盘链接&#xff1a; 嗨&#xff0c;请点击我&#xff01;http://pan.baidu.com/s/1_7sQ9Eky2mGogKe4W0A_6Q 提取码&#…

Vue简单日历

使用Vue实现简单的日历。 原理分析&#xff1a; 1.获取当前时间 2.显示当前时间 3.点击增加和减少月份 4.大月和小月的天数 效果演示 初始样式&#xff08;显示现在的日期时间&#xff09; 增加一个月 在程序开始之前一定注意&#xff1a; 引入Vue.js架包 代码演示 Body…