广告
返回顶部
首页 > 资讯 > 精选 >JavaScript如何实现时钟特效
  • 749
分享到

JavaScript如何实现时钟特效

2023-07-02 11:07:49 749人浏览 八月长安
摘要

这篇“javascript如何实现时钟特效”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript如何实现时钟特效

这篇“javascript如何实现时钟特效”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript如何实现时钟特效”文章吧。

简单时间实现:

<!DOCTYPE html><html><head><script type="text/javascript">function startTime(){var today=new Date()var h=today.getHours()var m=today.getMinutes()var s=today.getSeconds()// add a zero in front of numbers<10m=checkTime(m)s=checkTime(s)document.getElementById('txt').innerHTML=h+":"+m+":"+st=setTimeout('startTime()',500)}function checkTime(i){if (i<10)   {i="0" + i}  return i}</script></head><body onload="startTime()"><div id="txt"></div></body></html>

时钟特效代码:

<!DOCTYPE html><html> <head> <meta charset="utf8"> <meta Http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"> <meta name="keyWords" content="clock"> <meta name="description" content="This is a clock"> <title>Clock</title> </head> <body> <audio id="ticktock"> <source = src="ticktock.mp3" type="audio/mp3"> </audio> <script type="text/javascript">  Date.prototype.fORMat = function(fmt) { var map = {      "M+" : this.getMonth() + 1,     //月      "d+" : this.getDate(),     //日      "H+" : this.getHours(),     //24时            "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12,     //12时       "m+" : this.getMinutes(),      //分       "s+" : this.getSeconds(),      //秒       "S" : this.getMilliseconds(),      //毫秒       "t" : this.getHours() < 12 ? "AM" : "PM",  "T" : this.getHours() < 12 ? "上午" : "下午",  };  var week = {  "0" : "日",  "1" : "一",  "2" : "二",  "3" : "三",  "4" : "四",  "5" : "五",  "6" : "六", }  var quarter = {  "0" : "一",  "1" : "二",  "2" : "三",  "3" : "四", }  if(/(y+)/.test(fmt)) {      fmt = fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));  }  if(/(E+)/.test(fmt)) {       var weekPreStr;       switch(RegExp.$1.length) {       case 1:  weekPreStr = "";       break;       case 2:  weekPreStr = "周";       break;       default:  weekPreStr = "星期";       break;   }   fmt = fmt.replace(RegExp.$1, weekPreStr + week[this.getDay()]);  }  if(/(q)/.test(fmt)) {  fmt = fmt.replace(RegExp.$1, quarter[Math.floor(this.getMonth() / 3)]); }      for(var key in map) {           if(new RegExp("(" + key + ")").test(fmt)) {           fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? map[key] : ("00" + map[key]).substr((map[key]+"").length));           }      } return fmt;  }  </script> <script type="text/javascript"> var canvas = document.createElement("canvas");  document.body.appendChild(canvas);  var ctx = canvas.getContext("2d");  var halfPI = Math.PI / 2;  var doublePI = Math.PI * 2;  //阴影级别  var shadowBlur = 10;  //阴影宽度  var shadowWidth = 10;  //阴影在X方向上的偏移  var shadowOffsetX = 5;  //阴影在Y方向上的便宜  var shadowOffsetY = 5;  //深色阴影  var shadowDarkColor = "rgba(0,0,0,0.8)";  //浅色阴影  var shadowLightColor = "rgba(0,0,0,0.1)";  //画布中心到边缘的内切圆半径  var canvasRadius = 250;  canvas.width = canvasRadius * 2;  canvas.height = canvasRadius * 2;  //获取画布中心的坐标  var cx = canvasRadius;  var cy = canvasRadius;  //时钟外圈的贝塞尔花纹个数  var bezierPatternCount = 10;  //时钟外圈的贝塞尔花纹波峰处半径  var bezierPeakRadius = canvasRadius - 10;  //时钟外圈的贝塞尔花纹一半的角度  var bezierHalfSpan = doublePI / bezierPatternCount / 2;  //时钟外圈的贝塞尔花纹底部半径  var bezierRadius = bezierPeakRadius - 20;  //时钟外圈的贝塞尔花纹颜色  var bezierPatternColor = "Plum";  //时钟外圈半径  var clockBorderRadius = bezierRadius - 10;  //时钟外圈宽度  var clockBorderWidth = 10;  //时钟外圈颜色  var clockBorderColor = "Aqua";  //时钟外圈阴影半径  var clockBorderShadowRadius = clockBorderRadius - shadowWidth + 1;  //时钟整数时间刻度线宽  var clockScaleWidth = 2;  //时钟整数时间刻度外半径  var clockScaleOuterRadius = clockBorderRadius - shadowWidth;  //时钟整数时间刻度内半径  var clockScaleInnerRadius = clockScaleOuterRadius - 20;  //时钟刻度颜色  var clockScaleColor = "Black";  //时钟非整数时间处半径  var clockScaleMiddleRadius = clockScaleOuterRadius - 10;  //时钟数字半径  var clockNumRadius = clockBorderShadowRadius - 40;  //时钟数字字体  var clockNumFont = "25px Arial";  //时钟数字颜色  var clockNumColor = "black";  //数字日期距中心的垂直距离  var digitalDateMarginCenter = 50;  //数字日期颜色  var digitalDateColor = "Black";  //数字日期字体  var digitalDateFont = "bold 18px Arial";  //数字时间距中心的垂直距离  var digitalTimeMarginCenter = 100;  //数字时间颜色  var digitalTimeColor = "white";  //数字时间背景颜色  var digitalTimeBGColor = "DarkSlateBlue";  //数字时间字体  var digitalTimeFont = "bold 25px Arial";  //数字时间高度的一半  var digitalTimeHeight = 40;  //数字时间分隔线宽度  var digitalTimeSpanLineWidth = 2;  //时钟中心点内圆的半径  var clockCenterInnerDotRadius = 7;  //时钟中心点内圆的颜色  var clockCenterInnerDotColor = "FireBrick";  //时钟中心点外圆的半径  var clockCenterOuterDotRadius = 10;  //时钟中心点外圆的颜色  var clockCenterOuterDotColor = "Maroon";  //时针线宽  var clockNeedleWidth = 5;  //时针半径  var clockHourNeedleRadius = clockBorderShadowRadius - 120;  //时针颜色  var clockHourNeedleColor = "DarkGreen";  //分针半径  var clockMinuteNeedleRadius = clockBorderShadowRadius - 80;  //分针颜色  var clockMinuteNeedleColor = "DarkSlateGray";  //秒针半径  var clockSecondNeedleRadius = clockBorderShadowRadius - 40;  //秒针尾部半径  var clockSecondNeedleBottomRadius = -20;  //秒针颜色  var clockSecondNeedleColor = "FireBrick";  //画圆环  function strokeCircle(cx, cy, r) { ctx.beginPath(); ctx.arc(cx, cy, r, 0, doublePI); ctx.stroke(); }  //画圆  function fillCircle(cx, cy, r) { ctx.beginPath(); ctx.arc(cx, cy, r, 0, doublePI); ctx.fill(); }  //绘制线条  function strokeLine(x1, y1, x2, y2) { ctx.beginPath(); ctx.moveTo(x1, y1); ctx.lineTo(x2, y2); ctx.stroke(); }  //根据角度和半径计算圆上相应位置的坐标(最右侧为起始角度,顺时针方向为正)  function circlePos(cx, cy, theta, radius) {      var pos = {  x: cx + radius * Math.cos(theta),  y: cy + radius * Math.sin(theta), };      return pos;  }  //在圆环上绘制刻度线  function strokeCircleLine(cx, cy, theta, r1, r2) {      var pos1 = circlePos(cx, cy, theta, r1);      var pos2 = circlePos(cx, cy, theta, r2);      strokeLine(pos1.x, pos1.y, pos2.x, pos2.y);  }  //设置默认阴影  function setShadow(type) {      ctx.lineWidth = shadowWidth;      ctx.shadowBlur = shadowBlur;      ctx.shadowOffsetX = shadowOffsetX;      ctx.shadowOffsetY = shadowOffsetY;      if(type === 1) {       ctx.shadowColor = shadowLightColor;      } else {       ctx.shadowColor = shadowDarkColor;      }  }  //取消阴影  function clearShadow() {      ctx.shadowColor = "rgba(0,0,0,0)";      ctx.shadowBlur = 0;      ctx.shadowOffsetX = 0;      ctx.shadowOffsetY = 0;  }  //绘制时钟外圈的贝塞尔花纹  function renderBezierPattern() {      ctx.fillStyle = bezierPatternColor;      ctx.beginPath();      var theta = 0;      //由于circlePos是顺时针方向正, 故圈也是顺时针方向      var beginPos = circlePos(cx, cy, theta, bezierRadius);      ctx.moveTo(beginPos.x, beginPos.y);      while(theta < doublePI) {       //贝塞尔曲线控制点       var controlTheta = theta + bezierHalfSpan;       var controlPos = circlePos(cx, cy, controlTheta, bezierPeakRadius);       //贝塞尔曲线终止点       var endTheta = controlTheta + bezierHalfSpan;       var endPos = circlePos(cx, cy, endTheta, bezierRadius);       ctx.quadraticCurveTo(controlPos.x, controlPos.y, endPos.x, endPos.y);       theta = endTheta;     }      //绘制圆counterclockwise=false, 即默认是顺时针方向      ctx.arc(cx, cy, clockBorderRadius, 0, doublePI, true);      //注意: 两个相反方向的路径内部为填充范围      ctx.fill();  }  //绘制时钟边框  function renderClockBorder() {      //画外框      ctx.strokeStyle = clockBorderColor;      ctx.lineWidth = clockBorderWidth;      strokeCircle(cx, cy, clockBorderRadius);      //画外框的内阴影      ctx.strokeStyle = shadowLightColor;      setShadow(1); strokeCircle(cx, cy, clockBorderShadowRadius);      clearShadow();  }  //绘制时钟圆周上的数字和刻度部分  function renderClockNums() {       ctx.textAlign = "center";      ctx.textBaseline = "middle";      ctx.font = clockNumFont; var span = doublePI / 60;      for(var i = 1, radian = -halfPI + span; i <= 60; i++, radian += span) {  if(i % 5 == 0) {           //绘制刻度           ctx.strokeStyle = clockScaleColor;           ctx.lineWidth = clockScaleWidth;           strokeCircleLine(cx, cy, radian, clockScaleInnerRadius, clockScaleOuterRadius);           //绘制数字           var pos = circlePos(cx, cy, radian, clockNumRadius);  var num = i / 5;           ctx.fillStyle = clockNumColor;  ctx.fillText(num, pos.x, pos.y);           } else {           ctx.strokeStyle = clockScaleColor;           ctx.lineWidth = clockScaleWidth;           strokeCircleLine(cx, cy, radian, clockScaleMiddleRadius, clockScaleOuterRadius);         }      }  }  //绘制数字时钟  function renderDigital(date) {      //绘制日期      ctx.textAlign = "center";      ctx.textBaseline = "middle";      ctx.font = digitalDateFont;      ctx.fillStyle = digitalDateColor;      var text = date.format("yyyy年MM月dd日 EEE");      ctx.fillText(text, cx, cy + digitalDateMarginCenter);      //绘制时间      ctx.font = digitalTimeFont; text = date.format(" HH mm ss ");      ctx.fillStyle = digitalTimeBgColor; var textWidth = ctx.measureText(text).width;      var textBgX = cx - textWidth / 2;      var textBgY = cy + digitalTimeMarginCenter - digitalTimeHeight / 2;      ctx.fillRect(textBgX, textBgY, textWidth, digitalTimeHeight);      ctx.fillStyle = digitalTimeColor;      ctx.fillText(text, cx, cy + digitalTimeMarginCenter);      //绘制事件中间的分隔线      ctx.lineWidth = digitalTimeSpanLineWidth;      ctx.strokeStyle = digitalTimeColor;      var textSpan = textWidth / 6;      var leftLineX = cx - textSpan;      strokeLine(leftLineX, textBgY, leftLineX, textBgY + digitalTimeHeight);      var rightLineX = cx + textSpan; strokeLine(rightLineX, textBgY, rightLineX, textBgY + digitalTimeHeight);  }  //绘制时钟中心最下方红点  function renderClockCenterOuterDot() {     ctx.fillStyle = clockCenterOuterDotColor; fillCircle(cx, cy, clockCenterOuterDotRadius);  }  //绘制时钟中心最上方红点  function renderClockCenterInnerDot() {     ctx.fillStyle = clockCenterInnerDotColor; fillCircle(cx, cy, clockCenterInnerDotRadius);  }  //绘制时钟指针  function renderClockNeedle(date) {      var hourRadian = date.getHours() % 12 / 12 * doublePI - halfPI;      var minuteRadian = date.getMinutes() / 60 * doublePI - halfPI;      var secondRadian = date.getSeconds() / 60 * doublePI - halfPI;      setShadow();      ctx.lineCap = "round";      ctx.lineWidth = clockNeedleWidth;      ctx.strokeStyle = clockHourNeedleColor;      strokeCircleLine(cx, cy, hourRadian, 0, clockHourNeedleRadius);      ctx.strokeStyle = clockMinuteNeedleColor;      strokeCircleLine(cx, cy, minuteRadian, 0, clockMinuteNeedleRadius);      ctx.strokeStyle = clockSecondNeedleColor;      strokeCircleLine(cx, cy, secondRadian, clockSecondNeedleBottomRadius, clockSecondNeedleRadius);      ctx.lineCap = "square";      clearShadow();  }  function render(date) {      ctx.clearRect(0, 0, canvas.width, canvas.height);      renderBezierPattern();      renderClockBorder();      renderClockNums();      renderDigital(date);      renderClockCenterOuterDot();      renderClockNeedle(date);      renderClockCenterInnerDot();  }  var lastTime = 0;  var audio = document.getElementById("ticktock");  function loop() {      var date = new Date();      var currentTime = date.getTime();      if(currentTime - lastTime >= 1000) {       lastTime = currentTime;       //注意:这里设0非常关键,否则虽然会循环播放,但会从上一次暂停的地方开始播放,造成延迟       audio.currentTime = 0;       audio.play();       render(date);      }      requestAnimationFrame(loop);  }  loop();  </script>  </body> </html>

以上就是关于“JavaScript如何实现时钟特效”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: JavaScript如何实现时钟特效

本文链接: https://www.lsjlt.com/news/341577.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript如何实现时钟特效
    这篇“JavaScript如何实现时钟特效”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript如何实现时钟特效...
    99+
    2023-07-02
  • JavaScript实现时钟特效
    本文实例为大家分享了JavaScript实现时钟特效的具体代码,供大家参考,具体内容如下 简单时间实现: <!DOCTYPE html> <html> <...
    99+
    2022-11-13
  • javascript实现数字时钟特效
    本文实例为大家分享了javascript实现数字时钟特效的具体代码,供大家参考,具体内容如下 先看效果,动态数字时钟 用到了jQuery,但是只是用来获取元素,只有一点点 面向对象...
    99+
    2022-11-12
  • Android实现时钟特效
    本文实例为大家分享了Android实现时钟特效的具体代码,供大家参考,具体内容如下 效果展示: 功能介绍: 如果您想换一张背景图,可以点击左下角按按钮切换背景图片。 如果您...
    99+
    2022-06-06
    Android
  • JavaScript如何实现动态时钟效果
    本篇内容主要讲解“JavaScript如何实现动态时钟效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript如何实现动态时钟效果”吧!配置设计var config={&...
    99+
    2023-07-02
  • CSS3+js如何实现简单的时钟特效
    小编给大家分享一下CSS3+js如何实现简单的时钟特效,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网页更加美化。它也是一...
    99+
    2023-06-09
  • JavaScript实现动态时钟效果
    目录演示配置设计旋转功能设计更新每日演示 时间是非常有限的,过去时光永远不会再回来。要在有限的时间里面,去面对生活的困难和生存的竞争,是需要强化自我的。而这些强化学习是最需时间的。而...
    99+
    2022-11-13
  • JavaScript canvas实现七彩时钟效果
    利用canvas写七彩时钟! 1、题目 (1)、拿到一个时钟案例要求在页面上画出一个时钟,获取当前电脑的系统时间?(样式不限利用h5实现) 2、思路 (1)、首先我们要充分了解到ca...
    99+
    2022-11-12
  • 如何使用CSS3+js实现简单的时钟特效
    小编给大家分享一下如何使用CSS3+js实现简单的时钟特效,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!html代码如下:<...
    99+
    2022-10-19
  • JavaScript实现简单钟表时钟
    本文实例为大家分享了JavaScript实现简单钟表时钟的具体代码,供大家参考,具体内容如下 效果图: 主要思想: 1.先画一个圆表盘。 2.再用js循环画刻度(每一个刻度都是li...
    99+
    2022-11-12
  • pygame实现时钟效果
    用pygame做一个时钟,供大家参考,具体内容如下 刚刚学习pygame,由于基础实在太差,每个例子都要反复写逐句研究才能基本弄懂,这次做一个简单的有时针、分针、秒针,能正确行走的表...
    99+
    2022-11-12
  • JavaScript实现时钟功能
    本文实例为大家分享了JavaScript实现时钟功能的具体代码,供大家参考,具体内容如下 1、HTML和CSS部分 1.1 HTML部分 1.1.1先放在一个容器中clock,存放 ...
    99+
    2022-11-13
  • js如何实现电子时钟效果
    本篇内容主要讲解“js如何实现电子时钟效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“js如何实现电子时钟效果”吧!代码如下(示例):<!DOCTYPE html><...
    99+
    2023-07-02
  • JavaScript如何实现创意时钟项目
    小编给大家分享一下JavaScript如何实现创意时钟项目,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、最终效果展示:二、项...
    99+
    2022-10-19
  • JavaScript如何实现动态网页时钟
    这篇文章主要讲解了“JavaScript如何实现动态网页时钟”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript如何实现动态网页时钟”吧!设计思路:1先建立一个数组保存带有0〜...
    99+
    2023-07-02
  • JavaScript如何实现页面电子时钟
    这篇文章主要介绍了JavaScript如何实现页面电子时钟的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript如何实现页面电子时钟文章都会有所收获,下面我们一起来看看吧。题目:页面上有一个电子时钟...
    99+
    2023-07-02
  • JavaScript如何实现动态数字时钟
    小编给大家分享一下JavaScript如何实现动态数字时钟,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实现效果代码实现<!DOCTYPE htm...
    99+
    2023-06-15
  • 如何使用JavaScript实现钟表效果
    小编给大家分享一下如何使用JavaScript实现钟表效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下<!DOCTYPE html><html lang="en...
    99+
    2023-06-26
  • 基于HTML5+CSS3如何实现时钟效果
    这篇文章给大家分享的是有关基于HTML5+CSS3如何实现时钟效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。目的:利用html5,css实现钟摆效果知识点: 1) 利用pos...
    99+
    2022-10-19
  • js实现电子时钟效果
    本文实例为大家分享了js实现电子时钟效果的具体代码,供大家参考,具体内容如下 代码区域 代码如下(示例): <!DOCTYPE html> <html lang="...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作