最近试着用canvas元素的2d绘图函数做了一个弧线形的时钟。

我也没啥好说的,直接上代码:

<div id="myclock"></div>
<script>
createClock("#myclock", 0, 0.5); function createClock(selector, n, p_r) {
var weeks = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var p_b = 0.09;
var p_d = 0.4;
var n_c = "rgba(255,150,0,1)";
var canv = document.createElement("canvas");
var c = canv.getContext("2d");
var p = document.querySelectorAll(selector)[n];
p.appendChild(canv); canv.style.display = "block";
var r, b, l; function resizing() {
r = p_r * p.clientWidth;
canv.width = canv.height = 2 * r;
b = p_b * r;
l = r - (3 + 2 * p_d) * b;
c.lineWidth = b;
c.lineCap = "round";
c.strokeStyle = n_c;
}
resizing();
window.addEventListener("resize", resizing); function fraps() {
var t = new Date();
var ds = t.getFullYear() + '/' + ct(t.getMonth() + 1) + '/' + ct(t.getDate());
var ws = weeks[t.getDay()];
var hs = ct(t.getHours()) + ':' + ct(t.getMinutes());
var ss = ct(t.getSeconds());
var sn = t.getSeconds() + 0.001 * t.getMilliseconds();
var mn = t.getMinutes() + sn / 60;
var hn = t.getHours() + mn / 60;
if (hn > 12) hn -= 12;
c.clearRect(0, 0, 2 * r, 2 * r); c.fillStyle = 'black';
c.font = 0.65 * l + "px Arial bold";
c.fillText(hs, r - 0.845 * l, r + 0.247 * l); c.fillStyle = 'red';
c.font = 0.27 * l + "px Arial bold";
c.fillText(ds, r - 0.75 * l, r - 0.3 * l); c.font = 0.35 * l + "px Arial bold";
c.fillText(ws, r - 0.7 * l, r + 0.6 * l); c.fillStyle = 'aqua';
c.font = 0.57 * l + "px Arial bold";
c.fillText(ss, r, r + 1.3 * 0.57 * l); c.beginPath();
c.arc(r, r, r - 0.5 * b, -0.5 * Math.PI, (sn / 30 - 0.5) * Math.PI);
c.stroke();
c.beginPath();
c.arc(r, r, r - (1.5 + p_d) * b, -0.5 * Math.PI, (mn / 30 - 0.5) * Math.PI);
c.stroke();
c.beginPath();
c.arc(r, r, r - (2.5 + 2 * p_d) * b, -0.5 * Math.PI, (hn / 6 - 0.5) * Math.PI);
c.stroke();
} function ct(i) {
if (i < 10) i = "0" + i;
return i;
}
setInterval(fraps, 40);
}
</script>

Canvas实现弧线时钟的更多相关文章

  1. canvas做的时钟,学习下

    canvas标签只是图形容器,您必须使用脚本来绘制图形. getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性.——获取上下文对象. getContext(" ...

  2. 深夜,用canvas画一个时钟

    深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...

  3. canvas自适应圆形时钟绘制

    前面的话 前面介绍过canvas粒子时钟的绘制,本文将详细介绍canvas自适应圆形时钟绘制 效果演示 最终自适应圆形时钟的效果如下所示 功能分析 下面来分析一下该圆形时钟的功能 [1]静态背景 对于 ...

  4. canvas炫酷时钟

    canvas炫酷时钟 实现的功能 主要用到canvas的一些基础api 直接看效果 html: <canvas id="myCanvas" width="500&q ...

  5. 使用canvas绘制一个时钟

    周末学习canvas的一些基础功能,顺带写了一个基础的时钟.现在加工一下,做的更好看一点,先放上效果图: 谈一些自己的理解: (1).要绘制一个新的样式(不想被其他样式影响,或者影响到其他样式),那么 ...

  6. html5、canvas绘制本地时钟

    效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. canvas绘制简易时钟

    时钟绘制的非常简易,但该有的都有了. 效果图如下, <!DOCTYPE html> <html> <head lang="en"> <me ...

  8. 利用js+canvas实现的时钟效果图

    canvas+js时钟特效 运用js+canvas方面的知识完成一个时钟的效果图,再利用for循环实现指针的转动效果: <!--网页文档的声明--> <!doctype html&g ...

  9. 用canvas绘制一个时钟

    实现一个时钟的绘制和时间的显示 一,首先是页面的搭建html部分以及一点点的css代码,因为css这块用的比较少,所以就没有单独出来: <!DOCTYPE html> <html l ...

随机推荐

  1. 开发规范(一) 如何记录日志 By 阿里

  2. Inno Step软件安装包制作教程

    Inno setup制作软件安装包教程 1,Inno Setup介绍 Inno Setup 是一个免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本,能快速制作出标准Windows ...

  3. spark优化项

    一.Shuffle优化项 1.Shuffle优化配置 - spark.shuffle.file.buffer 默认值:32k 参数说明:该参数用于设置shuffle write task的Buffer ...

  4. VUE项目性能优化实践——通过懒加载提升页面响应速度

    本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 最近我司因业务需求,需要在一个内部数据分析平台集成在线Excel功能,既然我 ...

  5. DHCP.md

    DHCP 主配置文件   从 /usr/share/doc/dhcp 复制 dhcpd.conf.sample 到/etc/dhcp下                                  ...

  6. NIO基础操作

    原文链接http://zhhll.icu/2020/05/18/java%E5%9F%BA%E7%A1%80/IO/NIO%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/ N ...

  7. 【递归】P5461赦免战俘

    题目相关 原题链接:P5461 赦免战俘 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目背景 借助反作弊系统,一些在月赛有抄袭作弊行为的选手被抓出来了! 题目描述 现有 \(2 ...

  8. mysql错误:java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.

    java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more tha ...

  9. Linux下Oracle 11G XE 安装笔记

    操作系统 [oracle@RAC02 ~]$ lsb_release -aLSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:cor ...

  10. gin框架的路由源码解析

    前言 本文转载至 https://www.liwenzhou.com/posts/Go/read_gin_sourcecode/ 可以直接去原文看, 比我这里直观 我这里只是略微的修改 正文 gin的 ...