HTML创建简单动态时钟

简介: HTML创建简单动态时钟

介绍

动态时钟,就是通过CSS工具的美化效果和引入JavaScript,让网页呈现出钟表的动态效果,让它能够记录时间。通过改变背景颜色、指针颜色和阴影效果,让时钟呈现不同的颜色。

思路解析

制作动态时钟时,要注意以下细节:

(1)使用box-shadow标签来设置时钟的轮廓和阴影。

(2)用JS获取每个指针和它的时间,用到const限定符和querySelector方法。

制作过程

1)创建一个主容器class="clock"的时钟,为每个指针命名。

<div><!--时钟-->

                          <div>  <!--时针-->

                                   <div id="hr"></div>

                          </div>

                          <div>   <!--分针-->

                                   <div id="mn"></div>

                          </div>

                          <div>   <!--秒针-->

                                   <div id="sc"></div>

                          </div>

                  </div>

2)用CSS为时钟布置背景,在.clock使用Flex布局方式,并且让它水平、垂直方向都居中;引入时钟的背景图片,用background-size: cover把背景图片放大到适合容器的尺寸,让图片比例不变。

*{

         margin:  0;

         padding:  0;

         box-sizing:  border-box;

}

body{

         display:  flex;

         justify-content:  center;

         align-items:  center;

         min-height:  100vh;

         background:  #091921;

}

.clock{

         width:  350px;

         height:  350px;

         display:  flex;

         justify-content:  center;

         align-items:  center;

         background:  url(img/clock.png);

         background-size:  cover;

         border:  4px solid #091921;

         border-radius:  50%;

         .clock{

         width:  350px;

         height:  350px;

         display:  flex;

         justify-content:  center;

         align-items:  center;

         background:  url(img/clock.png);

         background-size:  cover;

         border:  4px solid #091921;

         border-radius:  50%;

         box-shadow:  0 -15px 15px rgba(255,255,255,0.05),/*时钟上半部分外发光*/

                     inset 0 -15px 15px rgba(255,255,255,0.05),/*时钟下半部分内发光*/

                     0 15px 15px rgba(0,0,0,0.3),/*时钟下半部分外阴影*/

                     inset 0 15px 15px rgba(0,0,0,0.3);/*时钟上半部分内阴影*/

}

3)使用 CSS3 中的 ":before" 伪元素为时钟添加实心小圆点,方便指针确认中心点。

.clock:before{

         content:  ''; /*必须存在,使伪元素显示*/

         position:  absolute;

         width:  15px;

         height:  15px;

         background:  #fff;

         border-radius:  50%;

         z-index:  10000;/*使实心小圆点在视图的最上层,遮挡住指针交叉的部分*/

}

4)为不同指针添加宽高和颜色。

.clock .hour,.clock .min,.clock .sec{

         position:  absolute;

}

.clock .hour, .hr{

         width:  160px;

         height:  160px;

}

.clock .min, .mn{

         width:  190px;

         height:  190px;

}

.clock .sec, .sc{

         width:  230px;

         height:  230px;

}

.hr .mn .sc{

         display:  flex;

         justify-content:  center;

         /*align-items:  center;*/

         position:  absolute;

         border-radius:  50%;

}

.hr:before{

         content:  '';

         position:  absolute;

         width:  8px;

         height:  80px;

         background:  orangered;

         z-index:  10;

         border-radius:  6px 6px 0 0;

         margin-left:  76px;

}

.mn:before{

         content:  '';

         position:  absolute;

         width:  4px;

         height:  90px;

         background:  #fff;

         z-index:  11;

         border-radius:  6px 6px 0 0;

         margin-left:  93px;

}

.sc:before{

         content:  '';

         position:  absolute;

         width:  2px;

         height:  150px;

         background:  red;

         z-index:  11;

         border-radius:  6px 6px 0 0;

         margin-left:  114px;

}

1

5)用JS获取到当前的时间,分别计算每个指针应该旋转的角度。其中,deg代表:度(一个圆 360 )

const deg = 6;   /*获取每个指针*/

         const hr = document.querySelector("#hr");

         const mm = document.querySelector("#mn");

         const ss = document.querySelector("#sc");

         setInterval(() => {

            let day = new Date(); /*获取当前时间*/

            let hh = day.getHours() * 30;

            let mm = day.getMinutes() * deg;

            let ss = day.getSeconds() * deg;

            hr.style.transform = 'rotate('+(hh+mm/12)+'deg)';  /*计算每个指针应旋转的角度*/

             mn.style.transform = 'rotate('+mm+'deg)';

            sc.style.transform = 'rotate('+ss+'deg)';

 

            })

效果图:

2

目录
相关文章
|
5月前
动态粒子发射404网站HTML源码
动态粒子发射404网站HTML源码,粒子内容可以进行修改,默认是4,0数字还有一个页面不存在英文,可以自行修改,喜欢的朋友可以拿去使用,源码是html,记事本打开修改即可,鼠标双击可以运行
62 1
动态粒子发射404网站HTML源码
|
6月前
|
存储 移动开发 前端开发
HTML动态爱心
HTML动态爱心
96 1
|
7月前
|
前端开发 JavaScript
HTML DOM如何通过JavaScript动态改变元素的CSS样式?
【5月更文挑战第23天】HTML DOM如何通过JavaScript动态改变元素的CSS样式?
95 1
|
编译器
html动态爱心代码【三】(附源码)
html动态爱心代码【三】(附源码)
571 0
|
7月前
|
移动开发 前端开发 JavaScript
【专栏:HTML与CSS实战项目篇】使用HTML5与CSS3制作一个动态表单验证页面
【4月更文挑战第30天】本文介绍了使用HTML5和CSS3创建动态表单验证页面的方法。首先,简述HTML5用于构建网页内容,CSS3用于描述样式。接着,分四步展示实现过程:1) 设计包含输入框和提示信息的表单结构;2) 使用CSS3创建样式,增强视觉效果;3) 使用JavaScript监听输入事件,动态验证表单并显示错误信息;4) 测试和调试确保跨平台兼容性。通过学习,开发者能掌握创建带验证功能的表单,提升用户体验。
82 7
|
7月前
|
编解码 前端开发 JavaScript
【专栏:HTML与CSS实战项目篇】打造一个动态新闻网站
【4月更文挑战第30天】构建动态新闻网站,运用HTML和CSS提升编程技能和网页设计理解。项目包括首页、新闻列表页和详情页,设计简洁易用,包含顶部导航、轮播图和新闻列表。页面布局注重吸引力和易用性,色彩搭配选用冷色调为主,辅以亮色点缀。字体选择清晰易读,布局保持整洁。交互效果如轮播图、导航栏高亮和响应式设计增强用户体验。本文提供基础新闻网站构建指南,为进一步功能扩展和优化打下基础。
641 5
|
7月前
科技感十足的动态HTML源码
科技感十足的动态HTML源码,源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面
173 0
科技感十足的动态HTML源码
html动态爱心代码【一】(附源码)
html动态爱心代码【一】(附源码)
8408 0
html动态爱心代码【附源码】
html动态爱心代码【附源码】
302 0
|
7月前
酷炫的粒子动态表白HTML源码
酷炫的粒子动态表白HTML源码,自己自定义文字,动态组合文字,进行表白,喜欢的朋友可以下载使用,很不错的表白HTML代码
85 0
酷炫的粒子动态表白HTML源码

热门文章

最新文章

下一篇
无影云桌面