Canvas实现弧线时钟
最近试着用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实现弧线时钟的更多相关文章
- canvas做的时钟,学习下
canvas标签只是图形容器,您必须使用脚本来绘制图形. getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性.——获取上下文对象. getContext(" ...
- 深夜,用canvas画一个时钟
深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...
- canvas自适应圆形时钟绘制
前面的话 前面介绍过canvas粒子时钟的绘制,本文将详细介绍canvas自适应圆形时钟绘制 效果演示 最终自适应圆形时钟的效果如下所示 功能分析 下面来分析一下该圆形时钟的功能 [1]静态背景 对于 ...
- canvas炫酷时钟
canvas炫酷时钟 实现的功能 主要用到canvas的一些基础api 直接看效果 html: <canvas id="myCanvas" width="500&q ...
- 使用canvas绘制一个时钟
周末学习canvas的一些基础功能,顺带写了一个基础的时钟.现在加工一下,做的更好看一点,先放上效果图: 谈一些自己的理解: (1).要绘制一个新的样式(不想被其他样式影响,或者影响到其他样式),那么 ...
- html5、canvas绘制本地时钟
效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- canvas绘制简易时钟
时钟绘制的非常简易,但该有的都有了. 效果图如下, <!DOCTYPE html> <html> <head lang="en"> <me ...
- 利用js+canvas实现的时钟效果图
canvas+js时钟特效 运用js+canvas方面的知识完成一个时钟的效果图,再利用for循环实现指针的转动效果: <!--网页文档的声明--> <!doctype html&g ...
- 用canvas绘制一个时钟
实现一个时钟的绘制和时间的显示 一,首先是页面的搭建html部分以及一点点的css代码,因为css这块用的比较少,所以就没有单独出来: <!DOCTYPE html> <html l ...
随机推荐
- 如何把 Next.js 项目部署到服务器?
Next.js 是什么? Next.js 是一个用于 生产环境的 React 框架.Next.js 为您提供生产环境所需的所有功能以及最佳的开发体验:包括静态及服务器端融合渲染. 支持 TypeScr ...
- Mybatis利用Intercepter实现物理分页
一.Interceptor介绍 Mybatis 允许用户使用自定义拦截器对SQL语句执行过程中的某一点进行拦截.默认情况,可以拦截的方法如下: Executor 中的 update().query() ...
- Liunx运维(九)-Liunx进程管理命令
文档目录: 一.ps:查看进程 二.pstree:查看进程状态树 三.pgrep:查找匹配条件的进程 四.kill:终止进程 五.killall:通过进程名终止进程 六.pkill:通过进程名种植进程 ...
- TCP三次握手(通俗易懂)
一--导读 前不久中国和外国RPEC协议的签订,标志着东亚自贸区的建立成功.现在韩国和日本要做贸易.日本一直监听着韩国总统的一举一动,但他又不会主动.(服务器的监听状态)只是被动的等着韩国总统先开口. ...
- Ubuntu上好用的截图工具——flameshot
前言 堪称完美的截图工具--flameshot,windows上人们习惯性的使用QQ自带的截图工具Ctrl+Alt+A或者WeChat自带的截图工具Alt+A,若您是一位使用聊天工具截图多年的&q ...
- Angular入门到精通系列教程(10)- 指令(Directive)
1. 摘要 2. 组件与指令之间的关系 2.1. 指令的种类 3. Angular 中指令的用途 4. 指令举例 4.1. 指令功能 4.2. Anuglar CLI生成基本文件 4.3. Direc ...
- 【对线面试官】Java 反射&&动态代理
// 抽象类,定义泛型<T> public abstract class BaseDao<T> { public BaseDao(){ Class clazz = this.g ...
- node解决跨域和服务器代理详解代码
node中有很多解决服务器代理的插件,这里简介一个:express-http-proxy 之前网上查的使用node解决跨域的插件,有很多,例如,cors,koa2,这里解决跨域问题我拿原生解决的,ex ...
- HAProxy-1.8.20 根据后缀名转发到后端服务器
global maxconn 100000 chroot /data/soft/haproxy stats socket /var/lib/haproxy/haproxy.sock mode 600 ...
- mysqldump 的-T参数
/usr/local/mysql/bin/mysqldump -uroot -T /tmp lina xuehao 把lina数据库中的xuehao表在tmp目录下备份出来两个文件,一个是纯数据.tx ...