用canvas标签实现网页H5动态时钟
2017-08-13 23:28
447 查看
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> #mycanvas{ position: absolute; left: 50%; margin-left: -250px; border: 5px solid #fff; box-shadow: 0 0 10px rgba(0,0,0,0.2); background-color: deepskyblue; } #box{ margin: 0 auto; width: 190px; height: 60px; background-color: #ff6700; border: 5px solid #fff; box-shadow: 0 0 10px rgba(0,0,0,0.2); color: #fff; line-height: 60px; font-size: 1.2em; } </style> </head> <body> <!-- canvas:H5新增的画布对象,可以在其中绘制任何的图形,以及线条效果包括图片 注意canvas的尺寸应该通过元素的属性直接设置,而不是使用样式实现(会失帧) --> <div id="box"></div> <canvas id="mycanvas" width="500px" height="500px"></canvas> <script> // 获取画布对象 var mycanvas = document.getElementById('mycanvas'); console.info(mycanvas); // 获取一个2d绘图环境(拿到一支画笔) var ctx = mycanvas.getContext('2d'); function draw(){ var date = new Date(); var hours = date.getHours(); var min = date.getMinutes(); var sec = date.getSeconds(); // console.info(hours+':'+min+':'+sec); hours = hours > 12 ? hours-12 : hours; // 清除画布(防止覆盖) ctx.clearRect(0,0,500,500); // 初始化画笔的样式 ctx.lineWidth = 5; ctx.strokeStyle = '#fff'; // 设置线条颜色 ctx.beginPath(); // 开始一个绘图路径 // 设置一个圆形路径 ctx.arc(250,250,150,0,360,false); ctx.stroke(); // 绘制图形 ctx.closePath(); // 结束一个绘图路径 // 绘制刻度(时刻度) for(var i = 0; i < 12; i++){ ctx.beginPath(); ctx.lineWidth = 10; ctx.save(); // 保存当前绘图环境 ctx.translate(250,250); // 重置绘制起始位置(将圆心点作为坐标原点(0,0)) ctx.rotate(i*30*Math.PI/180); // 旋转画布到一定的弧度 ctx.moveTo(0,140); // 设置绘制线条的起始位置 ctx.lineTo(0,150); // 设置线条的结束位置 ctx.stroke(); // 绘制路径 ctx.restore(); // 还原初始绘图环境 ctx.closePath(); } // 绘制刻度(分刻度) for(var i = 0; i < 60; i++){ ctx.beginPath(); ctx.lineWidth = 3; ctx.save(); ctx.translate(250,250); ctx.rotate(i*6*Math.PI/180); ctx.moveTo(0,140); ctx.lineTo(0,145); ctx.stroke(); ctx.restore(); ctx.closePath(); } // 绘制时针 分针 秒针 ctx.beginPath(); ctx.lineWidth = 6; ctx.save(); ctx.translate(250,250); ctx.rotate(((hours+min/60)+sec/3600)*30*Math.PI/180); ctx.moveTo(0,15); ctx.lineTo(0,-100); ctx.stroke(); ctx.restore(); ctx.closePath(); ctx.beginPath(); ctx.lineWidth = 4; ctx.save(); ctx.translate(250,250); ctx.rotate((min+sec/60)*6*Math.PI/180); ctx.moveTo(0,15); ctx.lineTo(0,-120); ctx.stroke(); ctx.restore(); ctx.closePath(); ctx.beginPath(); ctx.lineWidth = 2; ctx.strokeStyle = '#f00'; ctx.save(); ctx.translate(250,250); ctx.rotate(sec*6*Math.PI/180); ctx.moveTo(0,15); ctx.lineTo(0,-135); ctx.stroke(); ctx.restore(); ctx.closePath(); } setInterval(draw, 1000); function f1(){ var date = new Date(); var year = fmtDate(date.getFullYear());//完整的年份 var month = fmtDate(date.getMonth()+1);// 7 月份从0开始 var day = fmtDate(date.getDate());// 号 var hours = fmtDate(date.getHours()); var min = fmtDate(date.getMinutes()); var sec = fmtDate(date.getSeconds()); var content = (year+'-'+month+'-'+day+' '+hours+':'+min+':'+sec); document.getElementById('box').innerHTML = content; } // 每隔一秒执行一次函数 setInterval(f1,1000); function fmtDate(v){ if(v < 10){ return '0'+v; } return v; } </script> </body> </html>
相关文章推荐
- html5:<canvas>标签实现动态效果
- canvas实现动态时钟
- html5:<canvas>标签实现动态效果
- Android UI编程进阶——使用SurfaceViewt和Canvas实现动态时钟
- 环形进度条的实现方法总结和动态时钟绘制(CSS3、SVG、Canvas)
- Android UI编程进阶——使用SurfaceViewt和Canvas实现动态时钟
- canvas标签结合javascript做出动态时钟效果
- canvas标签实现动态小球
- js 利用canvas标签画一个存储按钮(附加svg动态按钮)
- canvas实现简易时钟效果
- canvas实现时钟
- jQuery+canvas实现的球体平抛及颜色动态变换效果
- android 让TextView支持的Html标签实现自定义时钟显示组件DigitalClock
- canvas动态时钟(老师写的)
- Android 8.1 Launcher3实现动态指针时钟功能
- java实现动态时钟并设置闹钟功能
- JS跨域调用之JSONP--动态Script标签方式实现跨域
- JS实现多图片上传,无插件,动态生成标签
- linux shell实现动态时钟
- Js用Canvas实现简单时钟