初学JS:用代码感受时间

如今人们的生活已与代码密切不分,可以说入眼所见皆有代码背后"作祟"。早上起床,耳边是手机闹铃,这是代码根据你的意愿产生的,打开手机看看时间,这是代码根据你所选择的时区为你提供的最准确的时间,等等。代码可以为你做很多事,但使用它来写出所想要的功能,这就需要专业技术,而如果你没有时间学习,这就需要程序员来帮助,而前端则是让你能更方便的使用由代码所编写出的功能。

JavaScript是前端学习不可避免的一项技术,html与css可以让你的想法有形,js可以让形有生,这里我来编写一个传统时钟,它的主要部分有html、css、以及最重要的js三部分构成

1.html部分

复制代码
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./style.css">
</head>
<body>
    <div class="clock">
        <div class="outer-clock-face">
            <div class="marking marking-one"></div>
            <div class="marking marking-two"></div>
            <div class="marking marking-three"></div>
            <div class="marking marking-four"></div>
            
            
            <div class="inner-clock-face">
                <div class="hand hour-hand"></div>
                <div class="hand min-hand"></div>
                <div class="hand second-hand"></div>
            </div>
        </div>
    </div>


    <script src="./index.js"></script>
</body>
</html>

这里是一个简单的页面设置,并且引入了css及js的设置,它有外表盘、四根刻度线、里表盘、时针、分针、秒针这些元素组成,接下来对这些元素进行一些设置

2.css部分

*{ 复制代码
    margin: 0;
    padding: 0;
}
body{
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}
.clock{
    width: 300px;
    height: 300px;
    border: 7px solid #ffebdb;
    border-radius: 50%;
    background-image: url(./Image_1715598291159.jpg);
    background-size: 111%;
    background-repeat: no-repeat;
    background-position: center center;
    padding: 20px;
}
.outer-clock-face{
    width: 300px;
    height: 300px;
    border-radius: 50%;
    position: relative;
}
.marking{
    width: 3px;
    height: 100%;
    background-color:#596235;
    position: absolute;
    left: 50%;
    margin-left: -1.5px;
    border-radius: 8px;
    transform-origin: 50% 50%;
}
.marking-one{
    transform: rotateZ(30deg);
}
.marking-two{
    transform: rotateZ(60deg);
}
.marking-three{
    transform: rotate(120deg);
}
.marking-four{
    transform: rotate(150deg);
}
.outer-clock-face::before,
.outer-clock-face::after{
    content: '';
    width: 10px;
    height: 100%;
    background-color:#596235;
    display: block;
    position: absolute;
    left: 50%;
    margin-left: -5px;
    border-radius: 8px;
}
.outer-clock-face::after{
    transform: rotateZ(90deg);
}
.inner-clock-face{
    width: 80%;
    height: 80%;
    border-radius: 100%;
    background-color: #ffebdb;
    position: absolute;
    z-index: 1;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
    background-image: url(./Image_1715598291159.jpg);
    background-size: 150%;
    background-position: center center;
    
}
.hand{
    width: 30%;
    height: 6px;
    background-color:#b03715;
    position: absolute;
    top: 50%;
    right: 50%;
    border-radius: 6px;
    margin-top: -3px;
    transform: rotate(90deg);
    transform-origin: 100% 50%;
}
.second-hand{
    width: 45%;
    height: 2px;
    margin-top: -1px;
    background-color: #b3b3b3;
}
.min-hand{
    width: 45%;
    background-color: #000000;
}
.hour-hand{
    background-color: #000000;
}

这里是对哪些元素进行的一些设置,使这些元素构成了表的样子,并且以我的图片作为背景图片

最后为这个时钟注入灵魂

3.js部分

var 复制代码
var minHand = document.querySelector('.min-hand')
var hourHand = document.querySelector('.hour-hand')

function setDate(){
    //get当前时间
    var now = new Date()

    //读秒
    var seconds= now.getSeconds()

    //计算旋转角度
    var secondDeg=((seconds / 60) * 360) + 90

    //set秒针角度
    secondHand.style.transform = `rotate(${secondDeg}deg)`

    //读分
    var mins= now.getMinutes()

    //计算旋转角度
    var minsDeg=((mins / 60) * 360 + (seconds / 60)* 6 ) + 90

    //set秒针角度
    minHand.style.transform = `rotate(${minsDeg}deg)`

    //读时
    var hours= now.getHours()

    //计算旋转角度
    var hoursDeg=((hours / 12) * 360 + (mins / 60)* 30 + (seconds / 60) * 0.5) + 90

    //set秒针角度
    hourHand.style.transform = `rotate(${hoursDeg}deg)`
}

setInterval(setDate,1000);

最后其实仅仅只是加了一个触发器,使setDate这个函数每1000ms触发一次,让时针、分针、秒针以当前时间计算出的角度来进行偏转。最后,一个精美的时钟就做好了。

相关推荐
ThomasChan12338 分钟前
Typescript 多个泛型参数详细解读
前端·javascript·vue.js·typescript·vue·reactjs·js
zzlyx991 小时前
.NET 9 微软官方推荐使用 Scalar 替代传统的 Swagger
javascript·microsoft·.net
Bunury1 小时前
组件封装-List
javascript·数据结构·list
我命由我123451 小时前
NPM 与 Node.js 版本兼容问题:npm warn cli npm does not support Node.js
前端·javascript·前端框架·npm·node.js·html5·js
Orange3015112 小时前
【自己动手开发Webpack插件:开启前端构建工具的个性化定制之旅】
前端·javascript·webpack·typescript·node.js
Jacob程序员4 小时前
leaflet绘制室内平面图
android·开发语言·javascript
eguid_14 小时前
JavaScript图像处理,常用图像边缘检测算法简单介绍说明
javascript·图像处理·算法·计算机视觉
sunly_5 小时前
Flutter:自定义Tab切换,订单列表页tab,tab吸顶
开发语言·javascript·flutter
咔咔库奇5 小时前
【TypeScript】命名空间、模块、声明文件
前端·javascript·typescript
NoneCoder5 小时前
JavaScript系列(42)--路由系统实现详解
开发语言·javascript·网络