canvas时钟效果

效果图

html结构

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<title>canvas clock</title>

<link rel="stylesheet" href="">

<style>

div{

text-align: center;

margin-top: 250px;

}

</style>

</head>

<body>

<div>

<canvas id="clock" width="500" height="500"></canvas>

</div>

<script type="text/javascript" src="js/clock.js"></script>

</body>

</html>

js脚本

/*1.*/

var dom = document.getElementById("clock");

var ctx = dom.getContext("2d");

var width = ctx.canvas.width;

var height = ctx.canvas.height;

var r = width / 2;

var rem = width / 200;

/*2.*/

function drawBackground(){

ctx.save();

ctx.translate(r,r);

ctx.beginPath();

ctx.lineWidth = 10 * rem;

ctx.arc(0,0,r - ctx.lineWidth / 2,0,2*Math.PI,false);

ctx.stroke();

ctx.closePath();

var hourNumbers = [3,4,5,6,7,8,9,10,11,12,1,2];

ctx.font = 18 * rem +‘px Arial‘;

ctx.textAlign = "center";

ctx.textBaseline = "middle";

hourNumbers.forEach(function(number,i){

var rad = 2 * Math.PI / 12 * i;

var x = Math.cos(rad) * (r-30 * rem);

var y = Math.sin(rad) * (r-30 * rem);

ctx.fillText(number,x,y);

});

for(var i = 0;i< 60;i++){

var rad = 2 * Math.PI / 60 * i;

var x = Math.cos(rad) * (r-18 * rem);

var y = Math.sin(rad) * (r-18 * rem);

ctx.beginPath();

if (i % 5 == 0) {

ctx.fillStyle = "#000";

}else{

ctx.fillStyle = "#ccc";

}

ctx.arc(x,y,2*rem,0,2*Math.PI,false);

ctx.fill();

ctx.closePath();

}

}

/*3*/

function drawCommon(rad,lineWidth,lineCap,moveTo1,moveTo2,lineTo1,lineTo2){

ctx.save();

ctx.beginPath();

ctx.rotate(rad);

ctx.lineWidth = lineWidth;

ctx.lineCap = lineCap;

ctx.moveTo(moveTo1,moveTo2);

ctx.lineTo(lineTo1,lineTo2);

ctx.stroke();

ctx.closePath();

ctx.restore();

}

/*4.*/

function drawHour(hour,minute){

var hrad = 2 * Math.PI / 12 * hour;

var mrad = 2 * Math.PI/ 12 / 60 * minute;

var rad = hrad + mrad;

var lineWidth = 6 * rem;

var lineCap = "round";

var moveTo1 = 0,moveTo2 = 10 * rem;

var lineTo1 = 0,lineTo2 = -r / 2;

drawCommon(rad,lineWidth,lineCap,moveTo1,moveTo2,lineTo1,lineTo2);

}

/*5.*/

function drawMinute(minute){

var rad = 2 * Math.PI / 60 * minute;

var lineWidth = 3 * rem;

var lineCap = "round";

var moveTo1 = 0,moveTo2 = 10 * rem;

var lineTo1 = 0,lineTo2 = -r + 30 * rem;

drawCommon(rad,lineWidth,lineCap,moveTo1,moveTo2,lineTo1,lineTo2);

}

/*6.*/

function drawSecond(second){

var rad = 2 * Math.PI / 60 * second;

ctx.save();

ctx.beginPath();

ctx.fillStyle = "#c14543";

ctx.rotate(rad);

ctx.moveTo(-2 * rem,20 * rem);

ctx.lineTo(2 * rem,20 * rem);

ctx.lineTo(1,-r+18 * rem);

ctx.lineTo(-1,-r+18 * rem);

ctx.fill();

ctx.closePath();

ctx.restore();

}

/*7.*/

function drawDot(){

ctx.beginPath();

ctx.fillStyle = "#fff";

ctx.arc(0,0,3 * rem,0,2*Math.PI,false);

ctx.fill();

ctx.closePath();

}

/*8.*/

function draw(){

ctx.clearRect(0,0,width,height);

var now = new Date();

var hour = now.getHours();

var minute = now.getMinutes();

var second = now.getSeconds();

drawBackground();

drawHour(hour,minute);

drawMinute(minute);

drawSecond(second);

drawDot();

ctx.restore();

}

/*9.*/

draw();

setInterval(draw,1000);

时间: 2024-10-03 22:40:11

canvas时钟效果的相关文章

HTML5之Canvas时钟(网页效果--每日一更)

今天,带来的是使用HTML5中Canvas标签实现的动态时钟效果. 话不多说,先看效果:http://webfront.verynet.cc/pc/canvas-clock.html 众所周知,Canvas标签是HTML5中的灵魂,HTML5 Canvas是屏幕上的一个由JavaScript控制的即时模式位图区域.即时模式是指在画布上呈现像素的方式, HTML5 Canvas通过JavaScript调用CanvasAPI,在每一帧完全重绘屏幕上的位图.详细将在下面代码进行说明. HTML结构代码

canvas实现的时钟效果

最近在网上看到了一个css3实现的可爱时钟,觉得很nice,然后就想着用canvas试试实现这个时钟效果. 首先,要实现时钟需要先计算时钟上的数字应该占整个圆的大小. 因为一个圆是360度,所以数字之间就是360/12=30度,所以我在圆上画出数字的代码是这样的: drawNumber:function(){ this.context.save(); for(var i = 0;i < 12; i++){ var angle = i*30; angle = angle*Math.PI/180;

transform实现的时钟效果

又来一个时钟效果了,这个的实现不需要canvas,都是div.ul.li画出的,好玩有真实. 哈哈~ 需要的js才能实现到走动这个效果,但js的内容不多,也不难. 主要是一个css里transform的使用的思路,transform里有很多变幻属性,而普通的时钟 在我心中就是个圆圆的东西,那么是不是可以旋转这个属性(rotate)实现了,它的刻度 使用旋转且把旋转点设置在圆心,那不就可以绕着圆心转了吗,而时针它们的底部不是和 圆心接触的吗,那么设置时针的底部为旋转点不就OK了,大概的说了说思路.

原生js之canvas时钟组件

canvas一直是前端开发中不可或缺的一种用来绘制图形的标签元素,比如压缩上传的图片.比如刮刮卡.比如制作海报.图表插件等,很多人在面试的过程中也会被问到有没有接触过canvas图形绘制. 定义 canvas元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. canvas标签只是图形容器,您必须使用脚本来绘制图形. 浏览器支持 Internet Explorer 9.Firefox.Opera.Chrome 和 Safari 支持 那么本篇文章就通过一个时钟组件来熟悉使用一下关

第35天:时钟效果

时钟效果案例 1.得到现在的时分秒2.旋转角度原理一圈360°   60s   1s/6°旋转second.style.WebkitTransform="rotate(60deg)";//每秒旋转60度 案例: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>时钟效果</

1.1 结合date()和setTimeOut()实现简单的时钟效果

一.简单的时钟效果 首先要熟悉日期函数date()以及其常用的方法 getFullYear()  返回完整的年份 比如:2016 getMonth()  返回月份(从0开始,需+1) getDate()  返回日期 getHours()  返回小时数 getMinutes()  返回分钟数 getSeconds()  返回秒数 getDay() 返回星期几 (0-6,0是星期天,1是星期一) 写一个简单的html页面,用来展示时钟效果 <!DOCTYPE html> <html>

原生javascript实现网页显示日期时钟效果

刚接触javascript中Date内置对象时,以为这些方法都太简单了,结果要自己实际操作写一个时钟效果还真一时把我难住了,主要有几点大家要注意的.先看实际效果 要实现这样的效果 某年某月某日星期几几时几分几秒 先看代码效果 <script type="text/javascript"> window.onload=function(){ showDate(); countdown(); } function showDate(){ var myDate=new Date(

转CSS3+js实现多彩炫酷旋转圆环时钟效果

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>多彩炫酷环形时钟效果</title> <style type="text/css"> #fancyClock{ margin:40px auto; he

HTML5 Canvas动画效果实现原理

在线演示 使用HTML5画布可以帮助我们高速实现简单的动画效果.基本原理例如以下: 每隔一定时间绘制图形而且清除图形,用来模拟出一个动画过程,能够使用context.clearRect(0, 0, x, y)方法来刷新须要绘制的图形 首先是绘制图形的方法,例如以下: function myAnimation() { ctx.clearRect(0, 0, canvas_size_x, canvas_size_y); if (x_icon < 0 || x_icon > canvas_size_