刻度时钟~

内容

上方是简易的刻度时钟,下方是电子时钟,上下的时间需与北京时间实时对应。

实验原理

使用js创建li节点做出刻度
计算时间戳与现在的时间的关系并输出
为时分秒针添加transform属性配合时间戳与定时器使时钟能够动起来
使用定时器让时间持续增加

html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>demo8</title>
    <link rel="stylesheet" href="./css/demo8.css">
</head>
<body>
    <div id="clock">
        <ul>
            <!-- 刻标 -->
        </ul>
        <div id="hour"></div>
        <div id="min"></div>
        <div id="sec"></div>
        <div id="dot"></div>
    </div>
    <div id="time"></div>
    <script src="./js/demo8.js"></script>
</body>
</html>

css

<style>
* {
    padding: 0;
    margin: 0;
}
ul{
    list-style: none;
}
#clock{
    width: 300px;
    height: 300px;
    margin: 100px auto;
    background-color: green;
    border: 2px solid #000;
    border-radius: 50%;
    position: relative;
}
#hour,#min,#sec{
    position: absolute;
    left: 50%;
    top: 50%;
    transform-origin: center bottom;
}
#hour{
    width: 10px;
    height: 40px;
    margin: -40px 0 0 -3px;
    background-color: red;
}

#min{
    width: 6px;
    height: 65px;
    margin: -65px 0 0 -2px;
    background-color: blue;
}
#sec{
    width: 2px;
    height: 100px;
    margin: -100px 0 0 -1px;
    background-color: yellow;
}
#dot{
    width: 15px;
    height: 15px;
    border-radius: 50%;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: red;
}
ul{
    position: relative;
    height: 100%;
    width: 100%;
}
li{
    width: 2px;
    height: 8px;
    background-color: #000;
    position: absolute;
    left: 50%;
    top: 0;
    transform-origin: center 150px;
}
#time{
    width: 100%;
    height: 200px;
    line-height: 200px;
    background-color: aqua;
    text-align: center;
    font-size: 100px;
    color: gray;
}
</style>

js

<script>
// 表盘
var ul = document.querySelector('ul')
for(var i=0;i<60;i++){
    var li=document.createElement('li')
    li.style.transform = 'rotate(' + i * 6 + 'deg)'//添加li使其属性负值
    if (i%5==0){
        li.style.height='18px'
    }
    ul.appendChild(li);
}
//指针运动
var hour = document.getElementById('hour')
var minu = document.getElementById('min')
var second = document.getElementById('sec')
function active() {
    var date = new Date()
    var Hour = date.getHours();
    var Minu = date.getMinutes()
    var S = date.getSeconds()
    //分针走了一半时钟时,时针到下一刻度中间
    hour.style.transform = 'rotate(' + (Hour * 30 + Minu / 3) + 'deg)';
    minu.style.transform = 'rotate(' + Minu * 6  + 'deg)';
    second.style.transform = 'rotate(' + S * 6 + 'deg)';
}
active()
setInterval(active, 1000)
//数字时间
var clock = document.getElementById('clock');
var word = document.getElementById('time');
function Time(date) {
    var sub = date.getTime() / 1000;//获取今天的时间戳
    var hours = parseInt(sub % (60 * 60 * 24) / (60 * 60)) + 8;//计算剩余相差多少小时
    var minutes = parseInt(sub % (60 * 60) / 60);//计算剩余相差多少分钟
    var miaos = parseInt(sub % 60);
    if (hours < 10) {
        hours = "0" + hours
    }
    if (minutes < 10) {
        minutes = "0" + minutes
    }
    if (miaos < 10) {
        miaos = "0" + miaos
    }
    let obj = {
        hours: hours,
        minute: minutes,
        miaos: miaos,
    }
    return obj
}
var date=new Date()
var reset=Time(date)
word.innerHTML = `现在是北京时间:${reset.hours}:${reset.minute}:${reset.miaos}`
//随时间数字增长
setInterval(function(){
    var date=new Date()
    var reset=Time(date)
    word.innerHTML = `现在是北京时间:${reset.hours}:${reset.minute}:${reset.miaos}`
}, 1000)
</script>

样式

刻度时钟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值