最近试着用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. eclipse再见,android studio 新手入门教程(二)项目的导入

    上一篇博客介绍了AS的一些常用设置方法,当工具调教妥当后,自然就要开始项目的开发啦.从零开始新建一个项目,这个简单,不必多说,这篇博客会分享我从旧平台eclipse导入项目到AS的过程,以及遇到的一些 ...

  2. Linux USB子系统(一)—— USB设备基础概念

    一.基础概念 在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的.一个USB设备由3个功能模块组成:USB总线接口 ...

  3. Thread通信与唤醒笔记1

    synchronized if判断标记,只有一次,会导致不该信息的线程运行了,出现了数据错误的情况 while判断标记,解决了线程获取执行权之后,是否要运行! notify 只能唤醒一个任意线程,如果 ...

  4. 前端面试题归类-HTML2

    一. SGML . HTML .XML 和 XHTML 的区别? SGML 是标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言,是所有电子文档标记语言的起源. HTML 是超文本标记 ...

  5. java.util.Collections

    p.p1 { margin: 0; font: 11px Monaco } span.s1 { text-decoration: underline } span.s2 { color: rgba(1 ...

  6. 记一次MAVEN依赖事故

    笔者昨天遇到的背景是这样的  MAVEN A模块有一个子模块  需要依赖B模块下的一个子模块  我在B项目内通过mvn deploy上传子模块 但之后在A模块引用  怎么引用都不行  提示 org.a ...

  7. ES6模板字符串及字符串的扩展方法

    一.ES6模板字符串 传统定义字符串的方式是: const str='hello es2015,this is a string' ES6新增了一种定义字符串的方式用反引号进行标识 const str ...

  8. 用python+sklearn(机器学习)实现天气预报数据 模型和使用

    用python+sklearn机器学习实现天气预报 模型和使用 项目地址 系列教程 0.前言 1.建立模型 a.准备 引入所需要的头文件 选择模型 选择评估方法 获取数据集 b.建立模型 c.获取模型 ...

  9. PHP将数据集转换成树状结构

    /** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * @param string $l ...

  10. Nginx配置请求头

    最近发现一个问题: IOS访问后台接口是,总是application/json;charset=utf-8 但是后台接口只支持大写的UTF-8,修改了Nginx的请求头之后正常. proxy_set_ ...