百余行代码实现炫酷时钟
电脑右下角的时间是不是早就看腻了,字小而且样式单调,今天,就用百余行HTML + CSS + JavaScript代码实现一个网页版的炫酷时钟,当然也可以使用Electron封装前端代码,实现桌面版的炫酷时钟应用程序,话不多说,直接上效果图:
1.构造盒子雏形
在HTML标签中,我们可以把div比喻成一个盒子,在div标签中还可以嵌套div标签,这就好比大盒子中还装着一个或若干个小的盒子。每一个盒子都有一个边框(border),盒子内容与边框之间的距离称之为内边距(padding),两个盒子之间的距离称之为外边距(margin)。
在这个小demo中,使用一个大的div盒子包裹3个小的div盒子,分别用来显示时分秒,直接上代码:
<div id="time">
<div><span id="hour">00</span><span>Hours</span></div>
<div><span id="minute">00</span><span>Minutes</span></div>
<div><span id="second">00</span><span>Seconds</span></div>
</div>
效果如下:
注:div标签默认没有边框,宽度和高度是根据div标签中的文字来决定的,为了更见明显的展示div盒子模型,在这个小demo中添加了边框和宽高的样式,就有了上图的效果。添加的样式代码如下:
#clock{ width: 600px; height: 250px; border: solid 1px black; margin: 0 auto; margin-top: 50px; } #time div{ width: 150px; height: 230px; border: solid 1px red; margin: 5px 0 5px 30px; float: left; }
2.使用CSS美化页面,实现炫酷效果
CSS可谓是女生的化妆品,能把单一枯燥的页面“化妆”的具有吸引力。首先给整个网页设置一个具有科技感的蓝黑色背景,然后将整个HTML元素水平垂直居中显示:
body{
background: #060a1f;
}
#clock{
min-height: 30vh;
display: flex;
justify-content: center;
align-items: center;
}
这里使用了flex的弹性布局方式,搭配
justify-content
和align-items
属性,属性值设为center
,即可实现body中所有子元素水平垂直居中显示。
给3个小的div盒子设置样式,盒子中的字体样式、大小、背景颜色代码如下:
#clock #time div{
position: relative;
margin: 0 5px;
-webkit-box-reflect:below 1px linear-gradient(transparent,#0004);
}
#clock #time div span{
position: relative;
display: block;
width: 250px;
height: 200px;
background: #2196f3;
color: #fff;
font-weight: 300;
display: flex;
justify-content: center;
align-items: center;
font-size: 8em;
z-index: 10;
box-shadow: 0 0 0 1px rgba(0,0,0,0.2);
}
#clock #time div span:nth-child(2){
height: 30px;
font-size: 1.2em;
letter-spacing: 0.2em;
font-weight: 500;
z-index: 9;
box-shadow: none;
background: #127fd6;
text-transform: uppercase;
}
#clock #time div:last-child span{
background: #ff006a;
}
#clock #time div:last-child span:nth-child(2){
background: #ec0062;
}
其中
box-reflect
是CSS3中的倒影特效属性,-webkit-box-reflect
是为了解决浏览器兼容问题,属性值below 1px linear-gradient(transparent,#0004)
是指倒影在对象的下边1px
处,使用线性渐变创建遮罩图像。
最终结果如下图:
3.使用JavaScript获取本地时间
使用js中的new Date()
方法可以获取本地时间的时间戳,使用getHours()
、getMinutes()
、getSeconds()
可以分别获取本地当前时间的时、分、秒。代码如下:
let h = new Date().getHours();
let m = new Date().getMinutes