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 ...
随机推荐
- List集合转JSONObject
以前写代码喜欢用Map拼接返回去给前端,这样得到的也是一个标准的JSON,今天先不说Map的优缺点,我们就来说说JSONObject的使用,我用的是阿里的fastjson,先上代码,当我们需要嵌套代码 ...
- java中将信息写入excel
//实体类 package com.cn.peitest.excel; import java.io.Serializable; /** * 员工基本信息 * * @author pei */ pub ...
- 还在使用Future轮询获取结果吗?CompletionService快来了解下吧。
背景 二胖上次写完参数校验(<二胖写参数校验的坎坷之路>)之后,领导一直不给他安排其他开发任务,就一直让他看看代码熟悉业务.二胖每天上班除了偶尔跟坐在隔壁的前端小姐姐聊聊天,就是看看这些 ...
- sklearn中的SGDClassifier
常用于大规模稀疏机器学习问题上 1.优点: 高效 简单 2.可以选择损失函数 loss="hinge": (soft-margin)线性SVM. loss="modifi ...
- mysql explain参数详解
主要对几个参数做一些记录 type:显示的是访问类型 从最好到最差的连接类型为:const.eq_reg.ref.range.index和ALL 至少要达到range,基本是ref 最好是const ...
- Linux 时间同步 02 ntpd、ntpdate的区别
Linux 时间同步 02 ntpd.ntpdate的区别 目录 Linux 时间同步 02 ntpd.ntpdate的区别 [一]这样做不安全. [二]这样做不精确. [三]这样做不够优雅. ntp ...
- 免费的java代码混淆,程序加密
java代码可以反编译,特别是放在客户端的程序很用被剽窃,盗用.保护程序一般都有以下几个方法: 1.将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密class文 ...
- LOG_PATH_IS_UNDEFINED
问题: SpringBoot + LogBack 写日志,除了正常的日志之外,程序跑起来后会在项目根目录多生成一个 LOG_PATH_IS_UNDEFINED 的文件夹,我的配置是以下: applic ...
- 在Termux(非root的安卓Linux模拟器)中安装和使用ftp服务器(pure-ftpd)(原创)[简单极致]
Termux是单用户的linux模拟器,所以应用的专属文件夹下面.usr/etc/下面没有passwd和group文件对多用户组配置,只在.usr/bin/下面有passwd二进制应用可以改变当前用户 ...
- git的基础知识
git 分布式版本控制工具 具备的功能 协同开发 多人并行不悖修改服务器端的同一个文件 数据备份 不仅保持目录和文件当前状态,还能保存每一个提交的历史版本 版本管理 保存每一个版本的文件信息的时候做到 ...