[100天挑战100个前端效果]第十六天---炫彩数字时钟

让我们先来看看实现的效果

在这里插入图片描述

html代码

<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第十六天</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="clock_box">
        <div class="clock">
            <p id="time"></p>
        </div>
    </div>
    <script>
        // 获取页面id=time的元素(P元素<p id="time">12:12:12 AM</p>)
        var time = document.querySelector("#time");
        // 定义函数传入time元素
        function up(time_el) {
            // 获取当前时间
            let date = new Date();
            // 获取时分秒
            let h = date.getHours();
            let m = date.getMinutes();
            let s = date.getSeconds();
            // 上午与下午
            let day_night = "AM";
            // 计算上午与下午
            if (h > 12) {
                h = h - 12;
                day_night = "PM";
            }
            // 如果时间小于10则前面补充0
            if (h < 10) { h = "0" + h; }
            if (m < 10) { m = "0" + m; }
            if (s < 10) { s = "0" + s; }
            // 拼接时间并且赋值给time元素的文本中,从而显示
            time_el.textContent = h + ":" + m + ":" + s + " " + day_night;
        }
        // 定时器,每秒执行一次实现更新
        setInterval(() => {
            up(time);
        }, 1000);
    </script>
</body>

</html>

css代码

:root {
    --color2: #56d5fc;
    --color4: #def700;
    --color6: #fa3195;
}

* {
    margin: 0;
    padding: 0;
}

html {
    font-size: 14px;
}

body {
    width: 100vw;
    height: 100vh;
    background-color: #000;
    display: flex;
    justify-content: center;
    align-items: center;
    font-family: 'Montserrat', sans-serif, Arial, 'Microsoft Yahei';
}

.clock_box {
    position: relative;
    width: 380px;
    height: 80px;
    border-radius: 10px;
    background-image: linear-gradient(135deg, var(--color2), var(--color4), var(--color6));
    /* 居中 */
    display: flex;
    justify-content: center;
    align-items: center;
    animation: animate 4s linear infinite;
}

.clock_box::after, .clock_box::before {
    position: absolute;
    content: "";
    background-image: inherit;
    width: 100%;
    height: 100%;
    z-index: -1;
    border-radius: 10px;
    filter: blur(15px);
} 

.clock_box::before {
    filter: blur(100px);
} 

.clock {
    position: absolute;
    left: 10px;
    right: 10px;
    top: 10px;
    bottom: 10px;
    background-color: #2b2a2a;
    border-radius: 8px;
    display: flex;
    justify-content: center;
    align-items: center;
} 

.clock p {
    font-size: 50px;
    font-weight: bold;
    color: transparent;
    letter-spacing: 2px;
    background-image: linear-gradient(135deg, var(--color2), var(--color4), var(--color6));
    background-clip: text;
    -webkit-background-clip: text;
} 

@keyframes animate {
    100% {
        filter: hue-rotate(360deg);
    }
}  

今日份知识总结

标签作用
document.querySelector("#demo");获取文档中 id=“demo” 的元素:
getHours根据本地时间返回时间的小时字段:
getMinutes可返回时间的分钟字段。
getSeconds可返回时间的秒。
textContenttextContent 属性设置或者返回指定节点的文本内容。
setIntervalsetInterval(() => {up(time); }, 1000);定时器
inheritinherit 关键字指定一个属性应从父元素继承它的值。
-webkit-background-clip实现镂空渐变色字体,配合color:transparent来使用
background-clip属性规定背景的绘制区域。
letter-spacing属性增加或减少字符间的空白(字符间距)。
hue-rotate是一个内置函数,用于对图像应用滤镜以设置图像的色调旋转。(让色调旋转,很吊!)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值