数字时钟(源代码分析)

[复制链接]
七夏(UID:1) 发表于 2024-10-7 14:56:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

效果演示

图片

HTML
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数字时钟</title>
    <link rel="stylesheet" href="./26-数字时钟.css">
</head>

<body>
    <div class="clock">
        <div class="numbers">
            <span style="--i:0"><b>12</b></span>
            <span style="--i:1"><b>3</b></span>
            <span style="--i:2"><b>6</b></span>
            <span style="--i:3"><b>9</b></span>
            <div class="circle" id="hr"><i></i></div>
            <div class="circle" id="mn"><i></i></div>
            <div class="circle" id="sc"><i></i></div>
        </div>
    </div>
</body>
<script src="./26-数字时钟.js"></script>
</html>
CSS
@import url(../public/style/font/Poppins.css);

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Poppins', sans-serif;
}

body {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background: #acbaca;
}

.clock {
    position: relative;
    width: 300px;
    height: 300px;
    background: #c9d5e0;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 50px;
    box-shadow: 30px 30px 30px -10px rgba(0, 0, 0, 0.15),
        inset 15px 15px 10px rgba(255, 255, 255, 0.75),
        -15px -15px 35px rgba(255, 255, 255, 0.55),
        inset -1px -1px 10px rgba(0, 0, 0, 0.2);
}

.clock::before {
    content: '';
    position: absolute;
    width: 4px;
    height: 4px;
    background: #e91e63;
    border-radius: 50%;
    z-index: 1000;
    box-shadow: 0 0 0 1px #e91e63,
        0 0 0 3px #fff,
        0 0 5px 5px rgba(0, 0, 0, 0.15);
}

.clock .numbers {
    position: absolute;
    inset: 35px;
    background: #152b4a;
    border-radius: 50%;
    box-shadow: 5px 5px 15px #152b4a66,
        inset 5px 5px 5px rgba(255, 255, 255, 0.75),
        -6px -6px 10px rgba(255, 255, 255, 1);

}

.clock .numbers span {
    position: absolute;
    inset: 5px;
    text-align: center;
    color: #fff;
    font-size: 1.25em;
    transform: rotate(calc(90deg * var(--i)));
}

.clock .numbers span b {
    font-weight: 600;
    display: inline-block;
    transform: rotate(calc(-90deg * var(--i)));
}

.clock .numbers::before {
    content: '';
    position: absolute;
    inset: 35px;
    background: linear-gradient(#2196f3, #e91e63);
    border-radius: 50%;
    animation: animate 2s linear infinite;
}

@keyframes animate {
    0% {
        transform: rotate(360deg);
    }

    100% {
        transform: rotate(0deg);
    }
}

.clock .numbers::after {
    content: '';
    position: absolute;
    inset: 38px;
    background: #152b4a;
    border-radius: 50%;
}

.clock .numbers .circle {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    z-index: 10;

}

.clock .numbers .circle i {
    position: absolute;
    width: 3px;
    height: 50%;
    background: #fff;
    transform-origin: bottom;
    transform: scaleY(0.55);
}

.clock .numbers .circle#hr i {
    width: 4px;
    transform: scaleY(0.3);
}

.clock .numbers .circle#mn i {
    transform: scaleY(0.45);
}

.clock .numbers .circle#sc i {
    width: 2px;
    transform: scaleY(0.55);
    background: #c91e63;
    box-shadow: 0 30px 0 #e91e63;
}
JavaScript
let hr = document.querySelector('#hr')
let mn = document.querySelector('#mn')
let sc = document.querySelector('#sc')

setInterval(() => {
    let day = new Date()
    let hh = day.getHours() * 30
    let mm = day.getMinutes() * 6
    let ss = day.getSeconds() * 6
    hr.style.transform = `rotateZ(${hh + (mm / 12)}deg`
    mn.style.transform = `rotateZ(${mm}deg)`
    sc.style.transform = `rotateZ(${ss}deg)`
});
小时候,看腻了农村的牛和马,长大后,来到了城里,才知道原来到处都是牛马!
全部回复2 显示全部楼层
梦淡如非(UID:8) 发表于 2024-10-7 22:27:54 | 显示全部楼层
这个挺好看的。
七夏(UID:1) 发表于 2024-10-7 23:08:37 | 显示全部楼层

我也很喜欢这个,足够简洁
小时候,看腻了农村的牛和马,长大后,来到了城里,才知道原来到处都是牛马!

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼

关于楼主

管理员
  • 主题

    710
  • 回答

    248
  • 积分

    1903
虚位以待,此位置招租

商务推广

    网盘拉新-短剧推广 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租