基于HTML5 Canvas实现炫酷钟表效果

Canvas---Canvas绘制钟表,仪表盘 Canvas绘制钟表,仪表盘。 《HTML5 Canvas核心技术》这本书在代码方面,没有丝毫注解,我感觉看的挺费劲,如果你想买书的话,最好还是先下本pdf看看吧。 下面是表盘的绘制图解 函数顺序是按照上图的顺序来写的,最后我为仪表加上了样式。 源代码: canvas{ bord 阅读详情

前言

HTML5支持的canvas可以在Web中画各种相对复杂的图案,只要你愿意,前端不需要美工设计再提供任何切图!废话不多说,进入正题,本文将给大家介绍通过HTML5 Canvas实现炫酷钟表效果。

正文

分解步骤

首先先到网上随便找一个钟表的图片当作本文的设计图。
在这里插入图片描述
这个图表的渲染可以分为几个大的方向,钟表的轮盘,钟表的刻度和上面的数字,钟表指针和中间的圆心,这样钟表大概的步骤就完成了,最后再实现钟表转动的动画这个就算完成了。

画布初始化

使用2d上下文建立画布

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>基于canvas实现clock效果</title>
</head>
<body>
    <canvas id="clock" width="200" height="200"></canvas>
</body>
<script src="./clock.js"></script>
</html>
var drawing = document.getElementById('clock'), context;

定义常量

定义常量的目的是为了增强这个钟表样式的可配置性和可维护性,之后函数可能会大量用到的常量定义如下:

const radius = 4, // 指数圈半径
    radius1 = 100, // 圆1半径(这里圆1的直径需要为画布width的一半, 不然下面刻度的部分可能对不上)
    radius2 = 90, // 圆2半径
    radius3 = 83, // 圆3半径
    fontRadius = 65, // 字体距圆心的距离
    hourWidth = 5, // 时针宽度
    hourHeight = 55, // 时针高度
    hourShadow = 2; // 时针阴影
    minuteWidth = 3, // 分针宽度
    minuteHeight = 68, // 分针高度
    minuteShadow = 1; // 分针阴影
    secondWidth = 1, // 秒针宽度
    secondHeight = 80, // 秒针高度
    secondShadow = 0.5; // 秒针阴影

工具类函数

这里定义了sin,cos和degTolength函数,具体的说明已经写在注释里了,为什么要定义sin,cos?Math库里不是有现成的,因为太久没写数学题了,额,有点分不清sin,cos的正负,所以为了后面函数绘制计算的方便,便转换成了角度并且取了字符串

/**
 * 把sin值封装成绝对正数,因为我不记得什么时候取负数了,头皮发麻
 * @params num 度数
 */
function sin(num){
   
   
    return Math.abs(Math.sin(degTolength(num)));
}

/**
 * 把cos值封装成绝对正数
 * @params num 度数
 */
function cos(num){
   
   
    return Math.abs(Math.cos(degTolength(num)));
}

/**
 * 度数转弧度
 */
function degTolength(num){
   
   
    return num * (2 * Math.PI / 360);
}

绘制钟表轮框

钟表轮框不难看出,由三个圆叠加形成,第一个是白变黑的渐变色,第二个是黑灰渐变色,第三个橘黄变黄的渐变色

/**
 * 钟表轮框
 */
function paintClockBorder(){
   
   
    // 先画一个圈圈出来
    context.beginPath();
    context.arc(100, 100, radius1, 0, 2 * Math.PI, false);
    // 调个白变黑渐变色
    
炫酷动态时钟——canvas 今天分享一下用canvas做的动态时钟,原理和代码都很简单,不过还是可以做出很炫酷的效果,想学习canvas的小伙伴可以看一下。 效果图 HTML5的canvas的知识点 看源代码前先看一下canvas的基本知识点: 首先,找到 canvas 元素: var c=document.getElementById(“myCanvas”); 然后,创建 context 对象: var ctx=c.getContext(“2d”); getContext(“2d”) 对象是内建的 HTML5 对象,拥有多种绘制路 阅读详情

相关推荐

HTML5 Canvas时钟效果全解析

本文还有配套的精品资源,点击获取 简介:HTML5的Canvas元素提供了一个绘图区域,允许开发者利用JavaScript创建动态的2D图形。本课程设计项目演示了一个具体的时钟效果实现,其中涉及了表盘、时分秒针的绘制和数字时间显示。通过学习这个项目,学生可以深入理解Canvas的基本使用、绘图方法、时间与动画处理,以及如何优化性能和考虑浏览器兼容性。 1. Can...

weixin_42471823的博客 1297

HTML5+CSS3实现钟表网页特效项目详解

HTML5与CSS3作为现代前端开发的核心技术,为网页动态特效的实现提供了强大支持。其中,钟表类网页特效不仅是前端动画能力的典型体现,也融合了结构语义、绘图能力、动画控制与时间逻辑处理等多个关键知识点。通过HTML5的语义化结构,开发者能够构建清晰的页面骨架;而CSS3则通过动画与布局技术,赋予钟表指针平滑旋转与响应式设计的能力。同时,结合JavaScript,可以实现对系统时间的获取与动态更新,使整个钟表界面具备真实运行效果。

weixin_42433737的博客 808

手绘时钟HTML,很简单的

HTML5的手绘时钟,再加两张图片就可以了,没技术含量,很简单的一个东西

canvas绘制时钟

利用html5中的canvas绘制的时钟,动态的呈现当前的时分秒

HTML5画布时钟

用HTML5的画布结合JQUERY以及CSS3.0的翻转制作的时钟,可以随时和系统时间保持一致,包括随时刷新也不影响

H5的canvas画时钟

用HTML5的canvas画时钟,怎么使用画布在浏览器上面绘画。画出一个漂亮的时钟。里面用到三角函数以及一些canvas的方法。

基于Html5-canvas炫酷的数字时钟.zip

html5开发

CentOS 7环境下GLPI与OCS Inventory资产管理系统集成部署指南

本文详细介绍了在CentOS 7环境下,如何将GLPI与OCS Inventory两大开源工具进行集成部署,构建自动化资产管理系统。指南涵盖环境准备、核心服务安装、Web界面初始化、OCS插件配置及资产同步实战,帮助运维人员实现IT资产的自动发现、统一管理与可视化,大幅提升资产管理效率。

weixin_29274337的博客 326

QT的温湿度显示系统

大家好,这里是石侃侃的博客,欢迎前来讨论这篇文章介绍的是DHT11在2440上的基于Qt5.6的应用基于单片机系统的温湿度监测系统构成框图如图2-1所示。图2-1 系统构成框图该系统采用单片机s3c2440作为了本设计的核心元件。利用LCD作为了显示器件,利用触摸屏作为用户界面输入设备,第一行显示当前实时的温度,湿度,第二行依次显示历史时刻最高的温度值,最高的湿度值。第三行是一个文本框,记录了程...

zxpcus的博客 1万+

基于R语言的DICE模型实践技术应用;预测不同减排路径下的经济增长、碳排放量、气候变化程度以及社会福利变化

DICE模型是一个动态综合气候经济模型,由诺贝尔经济学奖得主William Nordhaus开发,用于评估气候变化对经济的影响以及不同减排政策的经济成本和效益。以下是一个关于DICE模型在气候变化影响评估中的实际应用案例,结合R语言代码进行讲解。

KY_chenzhao的博客 867

手把手教你用UC3842搭建12V/5A反激电源(附PSIM仿真文件)

本文详细介绍了基于UC3842的12V/5A反激电源设计与PSIM仿真实践。从UC3842芯片选型、高频变压器计算到PSIM仿真模型搭建,提供完整的开关电源设计流程。特别包含PCB布局要点和实测优化建议,帮助工程师快速掌握反激电源开发技巧。

u6v7w8x的博客 1202

【学习笔记】一文搞懂IEPE传感器

本文介绍了IEPE(集成电路压电式)传感器的工作原理及其在振动监测中的应用。通过压电效应原理,IEPE传感器将机械振动转换为电信号,内置电荷放大器将高阻抗电荷信号转换为低阻抗电压信号输出。还介绍了传感器的三轴测量结构、4mA恒流源供电机制以及灵敏度与量程的关系,并通过风扇实验演示了故障诊断过程。实验使用USB-3123采集卡和SRD-1104信号调理器,展示了正常与异常状态下的振动数据差异,验证了IEPE传感器在设备状态监测中的有效性。

m0_62969865的博客 2816

从零到一:YOLOv11高帧率模型在RDK X5上的ONNX转换与部署实战

本文详细介绍了将最新的YOLOv11高帧率模型部署到地平线RDK X5开发板的完整实战流程。内容涵盖从PyTorch模型导出ONNX、地平线工具链环境配置与模型量化编译,到编写高效的板端推理代码,并针对高帧率目标进行了后处理优化。通过实战避坑指南,帮助开发者在RDK X5上实现30FPS以上的实时目标检测。

weixin_29089057的博客 139

【unity实战】随机地下城生成3——设置人物移动脚本、动画的切换和摄像机的跟随(含源码)

给房间添加触发器碰撞体,用来判断角色是否进入房间切割人物图片,注意人物每个图片高度可能不同,所有我们需要把轴心调整到人物的底部把人物跑步图片的高度,统一调成20,下面镂空,达到跳跃的效果快速创造人物动画,以人物idle为例,我们选中所有的idle人物图片,拖拽至窗口,unity就会自动生成,并提示保存动画位置别忘记设置人物排序图层,运行人物就动起来了新增run动画设置人物碰撞体设置刚体将重力设置为0,持续人物移动和动画切换的代码设置摄像机跟随单例代码在room中调用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1052

innovus:如何在init design之后新增参考库(lib/lef)

如题,在PR过程中经常会遇到这种问题,时序无法收敛,需要新增一套lvt或者hpc的库,怎么办?

m0_61544122的博客 5007

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: ES6中箭头函数(=>)的this
下一篇: 有效的字母异位数
祯民
博客等级 码龄9年 72粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值