给自己做一个时钟

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

我们可以看到,这个时钟由两个圆,三个指针和刻度组成,另外时针的指针要会动,时钟的背景是一张图片 圆和秒针,分针,时针的我们可以很容易想出来,设置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)
相关推荐
herogus丶7 分钟前
【Chrome】‘Good助手‘ 扩展程序使用介绍
前端·chrome
独立开阀者_FwtCoder11 分钟前
面试官:为什么在 Vue3 中 ref 变量要用 .value?
前端·javascript·vue.js
NetX行者13 分钟前
基于Vue 3的AI前端框架汇总及工具对比表
前端·vue.js·人工智能·前端框架·开源
独立开阀者_FwtCoder14 分钟前
手握两大前端框架,Vercel 再出手拿下 Nuxt.js,对前端有什么影响?
前端·javascript·vue.js
独立开阀者_FwtCoder14 分钟前
弃用 html2canvas!快 93 倍的截图神器!
前端·javascript·vue.js
weixin_3993806929 分钟前
TongWeb8.0.9.0.3部署后端应用,前端访问后端报405(by sy+lqw)
前端
伍哥的传说1 小时前
H3初识——入门介绍之常用中间件
前端·javascript·react.js·中间件·前端框架·node.js·ecmascript
洛小豆1 小时前
深入理解Pinia:Options API vs Composition API两种Store定义方式完全指南
前端·javascript·vue.js
洛小豆2 小时前
JavaScript 对象属性访问的那些坑:她问我为什么用 result.id 而不是 result['id']?我说我不知道...
前端·javascript·vue.js