给自己做一个时钟

心血来潮,自己做一个时钟。话不多说,进入正题。 效果图:

我们可以看到,这个时钟由两个圆,三个指针和刻度组成,另外时针的指针要会动,时钟的背景是一张图片 圆和秒针,分针,时针的我们可以很容易想出来,设置div,用css中的border-radius,把圆和木棍画出来,但刻度怎么弄呢,可以看如下图:

可以看到,刻度是由6 根木棍做出来的,在这个基础上我们把小圆盖上去就可以,我们最终的目的是要把这个样子做出来,至于里面是什么样子的,不用太过在意,毕竟谁能看到?

html代码如下:

ini 复制代码
<div class="clock">
        <div class="out-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>

在css样式中需要做什么?主要做如下事情:在clock中用background-image: url('');放背景图;在out-clock-face中设置position: relative;相对定位,方便后面的布置;熟练运用transform: ;将各个物体移动到对应的位置;颜色,长宽等自己设置;

最后,在js中我们需要让指针动起来,首先获取指针的对象,在,用var now = new Date() // 获取当前时间,然后计算转动角度,最后setTime() // 定时器 setInterval(setTime, 1000)

代码如下:

ini 复制代码
// 获取秒针
// 设置秒针旋转的角度

var secondHand = document.querySelector('.second-hand')
var minsHand = document.querySelector('.min-hand')
var hoursHand = document.querySelector('.hour-hand')

function setTime() {
    var now = new Date() // 获取当前时间

    // 读取秒
    var seconds = now.getSeconds()
    var secondDegress = seconds * 6 + 90
    secondHand.style.transform = `rotate(${secondDegress}deg)`

    // 读取分
    var mins = now.getMinutes()
    var minsDegress = mins * 6 + 90
    minsHand.style.transform = `rotate(${minsDegress}deg)`

    // 读取时
    var hours = now.getHours()
    var hoursDegress = hours % 12 * 30 + 90 + mins / 60 *30
    hoursHand.style.transform = `rotate(${hoursDegress}deg)`
}   

setTime()
// 定时器
setInterval(setTime, 1000)
相关推荐
新中地GIS开发老师40 分钟前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
用户059540174461 小时前
大模型对话记忆持久化踩坑实录:用 Playwright 自动化测了 300 次,终于揪出会话丢失的真凶
前端·css
丙氨酸長鏈1 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
kyriewen2 小时前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
IT_陈寒2 小时前
Vite热更新失效?你可能漏了这个配置
前端·人工智能·后端
梅孔立3 小时前
两种免费的翻译API调用方式详解 - Edge官方API与个人缓存服务
前端·缓存·edge
Revolution613 小时前
React 组件重新渲染时,到底重新执行了什么
前端·react.js·面试
用户2181697049304 小时前
Flutter(四)Dart语法 空安全 运算符 流程控制
前端
许彰午4 小时前
政务督办的分合模式:主办协办的并发审批
前端·javascript·政务
用户69371750013844 小时前
AI时代,程序员该往哪走?
前端·后端