给自己做一个时钟

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

我们可以看到,这个时钟由两个圆,三个指针和刻度组成,另外时针的指针要会动,时钟的背景是一张图片 圆和秒针,分针,时针的我们可以很容易想出来,设置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)
相关推荐
Qrun4 分钟前
Windows11安装nvm管理node多版本
前端·vscode·react.js·ajax·npm·html5
中国lanwp4 分钟前
全局 npm config 与多环境配置
前端·npm·node.js
JELEE.1 小时前
Django登录注册完整代码(图片、邮箱验证、加密)
前端·javascript·后端·python·django·bootstrap·jquery
TeleostNaCl3 小时前
解决 Chrome 无法访问网页但无痕模式下可以访问该网页 的问题
前端·网络·chrome·windows·经验分享
前端大卫5 小时前
为什么 React 中的 key 不能用索引?
前端
你的人类朋友5 小时前
【Node】手动归还主线程控制权:解决 Node.js 阻塞的一个思路
前端·后端·node.js
小李小李不讲道理6 小时前
「Ant Design 组件库探索」五:Tabs组件
前端·react.js·ant design
毕设十刻6 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
mapbar_front7 小时前
在职场生存中如何做个不好惹的人
前端
牧杉-惊蛰7 小时前
纯flex布局来写瀑布流
前端·javascript·css