html+css+JavaScript实现简洁的圆形时钟数字时钟+指针时钟

简介: 使用前端三件套实现一个实时跟新的时钟,其中包括电子时钟和刻度时钟

 ⏰题目要求

image.gif

⏰html代码

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>简洁的圆形时钟js代码</title><linkrel="stylesheet"href="css/style.css"type="text/css"/></head><body><divclass="container"><divclass="clock"><divid="date"class="date box"></div><divclass="clock-face"><divclass="marker twelve"></div><divclass="marker three"></div><divclass="marker six"></div><divclass="marker nine"></div><divid="minute-hand"class="hand minute-hand"></div><divid="hour-hand"class="hand hour-hand"></div><divid="second-hand"class="hand second-hand"></div><divid="centre"class="centre"></div><divid="digital-time"class="digital-time box"></div></div></div></div><scriptsrc="js/script.js"></script></body></html>
image.gif

⏰css代码

* {
transition: color.4s, background.4s, border.4s;
transition-timing-function: ease-in;
}
body {
background: #F9FBE7;
}
body.dark {
background: #223;
}
.container {
display: flex;
height: 100vh;
}
.clock {
position: relative;
margin: auto;
width: 220px;
height: 260px;
}
.box {
color: #7986CB;
background: #EDE7F6;
font-size: 20px;
text-align: center;
font-family: Lato, sans-serif;
border: 2pxsolid#D1C4E9;
border-radius: 4px;
}
.dark.box {
color: #90CAF9;
background: #4527A0;
border: 2pxsolid#673AB7;
}
.date {
width: 160px;
padding: 5px8px;
position: absolute;
top: -65px;
left: 15px;
}
.clock-face {
position: absolute;
height: 220px;
width: 220px;
background: #EDE7F6;
border-radius: 50%;
border: 4pxsolid#D1C4E9;
}
.dark.clock-face {
background: #4527A0;
border: 4pxsolid#673AB7;
}
.marker {
position: absolute;
width: 10px;
height: 10px;
background: #7986CB;
border-radius: 50%;
}
.dark.marker {
background: #90CAF9;
}
.twelve {
left: 105px;
top: 8px;
}
.three {
right: 8px;
top: 105px;
}
.six {
left: 105px;
bottom: 8px;
}
.nine {
left: 8px;
top: 105px;
}
.hand {
position: absolute;
left: 110px;
transform-origin: 0%;
border-radius: 050%50%0;
}
.hour-hand {
height: 8px;
width: 62px;
top: 107px;
background: #F06292;
}
.dark.hour-hand {
background: #E91E63;
}
.minute-hand {
height: 6px;
width: 88px;
top: 108px; 
background: #FF8A65;
}
.dark.minute-hand {
background: #FF9800;
}
.second-hand {
height: 3px;
width: 98px;
top: 109px; 
background: #777;
}
.dark.second-hand {
background: #eee}
.centre {
position: absolute;
width: 16px;
height: 16px;
background: #777;
border-radius: 50%;
top: 102px;
left: 102px;
}
.dark.centre {
background: #eee}
.digital-time {
width: 90px;
padding: 5px8px;
position: absolute;
top: 250px;
left: 55px;
}
.dark.digital-time {
color: #90CAF9;
background: #4527A0;
border: 2pxsolid#673AB7;
}
.switch-label {
color: #7986CB;
padding-right: 6px;
line-height: 1.6em;
font-family: Lato, sans-serif;
font-size: 0.9em;
}
.dark.switch-label {
color: #90CAF9;
}
/* The switch - the box around the slider */.switch {
position: relative;
display: inline-block;
width: 44px;
height: 24px;
}
/* Hide default HTML checkbox */.switchinput {
opacity: 0;
width: 0;
height: 0;
}
/* The slider */.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #aaa;
transition: .4s;
}
.slider:before {
position: absolute;
content: "";
height: 18px;
width: 18px;
left: 3px;
bottom: 3px;
background-color: #fff;
transition: .4s;
}
input:checked + .slider {
background-color: #90CAF9;
}
input:focus + .slider {
box-shadow: 001px#2196F3;
}
input:checked + .slider:before {
transform: translateX(20px);
}
/* Rounded sliders */.slider.round {
border-radius: 8px;
}
.slider.round:before {
border-radius: 5px;
}
image.gif

⏰js代码

//(1)声明一个7个长度的数组daysvardays=[];
days[0]='星期日';
days[1]='星期一';
days[2]='星期二';
days[3]='星期三';
days[4]='星期四';
days[5]='星期五';
//(2)往数组days后面添加一个元素,值为星期六;days[6]='星期六';
vardateDisplay=document.getElementById('date');
varhourHand=document.getElementById('hour-hand');
varminuteHand=document.getElementById('minute-hand');
varsecondHand=document.getElementById('second-hand');
vardigitalTime=document.getElementById('digital-time');
varclock=function() {  
//(3)获取当前时间vartimeNow=newDate(); 
varday=timeNow.getDay();
vardate=timeNow.getDate();
varmonth=timeNow.getMonth();
dateDisplay.innerHTML=days[day];
//(4)获取当前时间的秒varseconds=timeNow.getSeconds() ;
varsRot=seconds*6-90;
//(5)获取当前时间的分钟varminutes=timeNow.getMinutes();
varmRot= (minutes*6) + (seconds/10) -90;
//(6)获取当前时间的小时varhours=timeNow.getHours();
varhRot= (hours%12*30) + (minutes/2) -90;
hourHand.style.transform="rotate("+hRot+"deg)";
minuteHand.style.transform="rotate("+mRot+"deg)";
secondHand.style.transform="rotate("+sRot+"deg)";
//(7)给digitalTime的内容赋值digitalTime.innerHTML=format(hours)+":"+format(minutes)+":"+format(seconds);
}
functionformat(num) {
//(8)三元运算符,如果小于10则在num前面加个0,否则返回numreturnnum=num<10?'0'+num:num;
}
(functionrun() {
//(9)调用clock方法clock();
//(10)(11)(12)定义定时器1秒后执行调用自己setTimeout(function(){ run();}, 1000);
})();
image.gif

⏰代码分析

本题的考核是js代码的补充,其中考核重点是日期对象。

首先js中的日期对象需要使用new Date()实例化对象才能使用

Date对象的常用get方法image.gif

时钟需要获取到小时、分钟、秒

所以需要用到getHours()、getMinutes()、getSeconds()来获取

❗PS:

虽然指针时钟不是本题的考核,但也是一个重点

指针的移动是通过transform属性来设置旋转角度

image.gif

其次就是指针移动的算法

秒:var sRot = seconds * 6 - 90;

分:var mRot = (minutes * 6) + (seconds / 10) - 90;

时:var hRot = (hours % 12 * 30) + (minutes / 2) - 90;

最后计时器不能忘记设置和调用

1000毫秒=1秒

image.gif

⏰实现效果

image.gif

目录
相关文章
|
15天前
|
Web App开发 移动开发 HTML5
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码。画面中心是悬浮于空的梅花鹿,其四周由白色线段组成了一个6边形将中心的梅花鹿包裹其中。四周漂浮的白雪随着多边形的转动而同步旋转。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
47 2
|
25天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
50 7
|
25天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
32 6
|
25天前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
36 5
|
25天前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
27 5
|
1月前
|
移动开发 JavaScript 前端开发
html table+css实现可编辑表格的示例代码
html table+css实现可编辑表格的示例代码
58 12
|
1月前
|
前端开发 JavaScript
用HTML CSS JS打造企业级官网 —— 源码直接可用
必看!用HTML+CSS+JS打造企业级官网-源码直接可用,文章代码仅用于学习,禁止用于商业
126 1
|
1月前
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
47 3
|
4月前
|
前端开发
2s 利用 HTML+css动画实现企业官网效果
2s 利用 HTML+css动画实现企业官网效果