最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

HTML5canvas实现可拖拽时钟的示例代码分享

来源:动视网 责编:小采 时间:2020-11-27 15:10:21
文档

HTML5canvas实现可拖拽时钟的示例代码分享

HTML5canvas实现可拖拽时钟的示例代码分享:下面介绍一个自己搞的小时钟,方便拖拽。那么如何插入到自己的界面中呢?只需要加上如下代码就好了:<script type="text/javascript" src="clock.js"> </script> clcok.js的完整代码如下:var
推荐度:
导读HTML5canvas实现可拖拽时钟的示例代码分享:下面介绍一个自己搞的小时钟,方便拖拽。那么如何插入到自己的界面中呢?只需要加上如下代码就好了:<script type="text/javascript" src="clock.js"> </script> clcok.js的完整代码如下:var


下面介绍一个自己搞的小时钟,方便拖拽。

那么如何插入到自己的界面中呢?

只需要加上如下代码就好了:

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

clcok.js的完整代码如下:

var extra=document.createElement('p');
 extra.style.position='absolute';
 var extra_canvas=document.createElement('canvas');
 extra_canvas.id="extra_canvas";
 extra.appendChild(extra_canvas);
 document.body.appendChild(extra);

 var flag;
 var currentRectX;
 var currentRectY;
 
 function init(){
 flag=true;
 currentRectX=0;
 currentRectY=0;
 }

 

function clock(size,x,y){
 /* if(!flag){
 document.body.removeChild(extra_canvas);
 console.log('remove');
 }
 
 */
 if (!size){size=200;}
 if (!x)x=0;
 if (!y)y=0;
 extra_canvas.width=size;
 extra_canvas.height=size;
 var context=extra_canvas.getContext('2d');
 
 extra.style.left=currentRectX+'px';
 extra.style.top=currentRectY+'px';
 //console.log(currentRectX,currentRectY);
 //context.fillStyle='#FF0000';
 //context.fillRect(0,0,100,100);
 //绘制表盘
 var centerX=x+size/2;
 var centerY=y+size/2;
 //console.log(centerX,centerY);
 var radius=(size-40)/2;
 context.clearRect(x,y,x+size,y+size);
 context.beginPath();
 context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
 context.lineWidth = 5;
 context.strokeStyle = "grey";
 context.stroke();
 var grd = context.createLinearGradient(centerX-radius, centerY-radius,centerX+radius, centerY+radius);
 grd.addColorStop(0, "#FFFFFF"); // light blue
 grd.addColorStop(1, "#DDDDFF"); // dark blue
 context.fillStyle = grd;
 context.fill();
 context.closePath();

 //绘制数字时刻
 context.beginPath();
 //context.font="9pt";
 // context.fontsize=9px;
 //context.fontFamily="Square721 BT";
 context.fillStyle = "#0000f0"; // text color
 context.fillText("12",centerX-7,centerY-radius+18);
 context.fillText("3",centerX+radius-18,centerY+4);
 context.fillText("6",centerX-3,centerY+radius-12);
 context.fillText("9",centerX-radius+12,centerY+4);
 
 context.closePath();
/* //显示日期
context.beginPath();
context.TextOut(100,100,"星期");
context.closePath();
*/
 //绘制刻度
 for (var i=0;i<12;i++){
 context.beginPath();
 if(i%3){
 context.lineWidth = 3;
 context.strokeStyle = "grey";
 len=5;
 }else{
 context.lineWidth = 6;
 context.strokeStyle = "#ff0";
 len=10;
 }
 arc=i/6*Math.PI;
 kx=centerX+radius*Math.cos(arc);
 ky=centerY-radius*Math.sin(arc);
 context.moveTo(kx,ky);
 kx=centerX+(radius-len)*Math.cos(arc);
 ky=centerY-(radius-len)*Math.sin(arc);
 context.lineTo(kx,ky);
 
 context.stroke();
 context.closePath();
 }
 //绘制表中心
 context.beginPath();
 context.arc(centerX, centerY, 4, 0, 2 * Math.PI, false);
 context.lineWidth = 2;
 context.strokeStyle = "grey";
 context.stroke();
 context.closePath();
 
 //绘制时针分针
 
 var now=new Date();
 var hour=now.getHours()%12;
 var minute=now.getMinutes();
 var second=now.getSeconds();
 hour=hour+minute/60;//update the time!!
 minute=minute+second/60;

 var arc_hour=hour/6*Math.PI;
 context.beginPath();
 kx=centerX+(radius-40)*Math.sin(arc_hour);
 ky=centerY-(radius-40)*Math.cos(arc_hour);
 context.moveTo(kx,ky);
 kx=centerX+10*Math.sin(arc_hour+Math.PI);
 ky=centerY-10*Math.cos(arc_hour+Math.PI);
 context.lineTo(kx,ky);
 context.lineWidth = 6;
 context.strokeStyle = "black";
 context.stroke();
 context.closePath();
 
 context.beginPath();
 var arc_minute=minute/30*Math.PI;
 context.beginPath();
 kx=centerX+(radius-20)*Math.sin(arc_minute);
 ky=centerY-(radius-20)*Math.cos(arc_minute);
 context.moveTo(kx,ky);
 kx=centerX+20*Math.sin(arc_minute+Math.PI);
 ky=centerY-20*Math.cos(arc_minute+Math.PI);
 context.lineTo(kx,ky);
 context.lineWidth = 4;
 context.strokeStyle = "red";
 context.stroke();
 context.closePath();
// flag=false;
 context.beginPath();
 var arc_second=second/30*Math.PI;
 context.beginPath();
 kx=centerX+(radius-20)*Math.sin(arc_second);
 ky=centerY-(radius-20)*Math.cos(arc_second);
 context.moveTo(kx,ky);
 kx=centerX+20*Math.sin(arc_second+Math.PI);
 ky=centerY-20*Math.cos(arc_second+Math.PI);
 context.lineTo(kx,ky);
 context.lineWidth = 2;
 context.strokeStyle = "gray";
 context.stroke();
 context.closePath();

}
/*
extra.onmousedown=null;
extra.onmouseup=null; 
extra.onmousemove=null;
*/
extra_canvas.onmousedown=canvasMouseDownHandler;
extra_canvas.onmouseup=canvasMouseUpHandler; 
function canvasMouseDownHandler(event){
 var canvasMouseX=event.screenX;
 var canvasMouseY=event.screenY;
 extra_canvas.onmousemove=canvasMouseMoveHandler;
 // console.log('down');
 startDragMouseX=canvasMouseX;
 startDragMouseY=canvasMouseY;
 startDragRectX=currentRectX;
 startDragRectY=currentRectY;
 }
 function canvasMouseMoveHandler(event){
 event.preventDefault(); 
 var canvasMouseX=event.screenX;
 var canvasMouseY=event.screenY;
 // console.log('move');
 currentRectX=startDragRectX+canvasMouseX-startDragMouseX;
 currentRectY=startDragRectY+canvasMouseY-startDragMouseY;
 //console.log(currentRectX,currentRectY);
 clock();
 }

 function canvasMouseUpHandler(event){
 extra_canvas.onmousemove=null;
 //console.log('up');
 }
/* function cc(){
 clock(null,0,0);
}
*/
//window.setInterval(cc, 200);
init();
window.setInterval(clock, 200);

文档

HTML5canvas实现可拖拽时钟的示例代码分享

HTML5canvas实现可拖拽时钟的示例代码分享:下面介绍一个自己搞的小时钟,方便拖拽。那么如何插入到自己的界面中呢?只需要加上如下代码就好了:<script type="text/javascript" src="clock.js"> </script> clcok.js的完整代码如下:var
推荐度:
标签: 代码 时钟 钟表
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top