JavaScript之创意时钟项目(实例讲解)


Posted in Javascript onOctober 23, 2017

“时钟展示项目”说明文档(文档尾部附有相应代码

一、最终效果展示:

JavaScript之创意时钟项目(实例讲解)

二、项目亮点

1.代码结构清晰明了

JavaScript之创意时钟项目(实例讲解)

2.可以实时动态显示当前时间与当前日期

3.界面简洁、美观、大方

4.提高浏览器兼容性

JavaScript之创意时钟项目(实例讲解)

三、知识点汇总:

jQuery、原生javascript、css3、h5

四、重难点解释

1.各个指针的旋转角度的获取

首先要明确如下概念:

时钟指针旋转一周360度

时针:

表盘上共有12小时,每经过一小时,要旋转30度;

分针:

表盘上共有60个小格子,分针每走一分钟,经过一个小格子,转动6度;

秒针:

表盘上共有60个小格子,秒针每走一分钟,经过一个小格子,也转动6度;

(1)当前时间的获取

JavaScript之创意时钟项目(实例讲解)

举个例子(以时针旋转角度计算为例): 比如现在时间是 9:28;

时针应该在9和10之间,而通过JavaScript之创意时钟项目(实例讲解) 方式只能获取到整点,所以既要获取到当前的小时,也要获取到当前的分钟,这样才能更好的来确定时针的旋转角度,即为如下方式:

JavaScript之创意时钟项目(实例讲解)

(2)旋转角度的获取

由于时针每经过一个小时后,旋转30度,故获取时针旋转角度如下:

JavaScript之创意时钟项目(实例讲解)

同理,分针与秒针的旋转角度如下:

分针:

JavaScript之创意时钟项目(实例讲解)

秒针:

JavaScript之创意时钟项目(实例讲解)

为了使时钟更加的精准,这里精确到了毫秒;

(3)执行频率,即秒针旋转频率控制

JavaScript之创意时钟项目(实例讲解)

调整函数的执行时间间隔即可改变秒针转动频率。

五、项目待优化之处

1.页面过于简洁,有待进一步优化和改进;

2.作图时未来得及在时钟上画上分秒的刻度;

六、项目中各部分代码

1.HTML代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>jQuery指针时钟(附带日期)</title>
 <!--引入外部css样式-->
 <link rel="stylesheet" href="css/demo.css" rel="external nofollow" type="text/css" media="screen" />
</head>
<body>
 <!--引入jQuery库文件-->
 <script src="js/jquery-1.6.2.min.js"></script>
 <!--引入外部js文件-->
 <script src="js/script.js"></script>
 <div style="text-align:center;clear:both">
 </div>
</body>
</html>

2.css代码

*
{
 margin:0;
 padding:0;
}
body
{
 background:#f9f9f9;
 color:#000;
 font:15px Calibri, Arial, sans-serif;
 text-shadow:1px 2px 1px #FFFFFF;
}
a,
a:visited
{
 text-decoration:none;
 outline:none;
 color:#fff;
}
a:hover
{
 text-decoration:underline;
 color:#ddd;
}
  /*the footer (尾部)*/
footer
{
 background:#444 url("../images/bg-footer.png") repeat;
 position:fixed;
 width:100%;
 height:70px;
 bottom:0;
 left:0;
 color:#fff;
 text-shadow:2px 2px #000;
 /*提高浏览器的兼容性*/
 -moz-box-shadow:5px 1px 10px #000;
 -webkit-box-shadow:5px 1px 10px #000;
 box-shadow:5px 1px 10px #000;
}
footer h1
{
 font:25px/26px Acens;
 font-weight:normal;
 left:50%;
 margin:0px 0 0 150px;
 padding:25px 0;
 position:relative;
 width:400px;
}
footer a.orig,
a.orig:visited
{
 background:url("../images/demo2.png") no-repeat right top;
 border:none;
 text-decoration:none;
 color:#FCFCFC;
 font-size:14px;
 height:70px;
 left:50%;
 line-height:50px;
 margin:12px 0 0 -400px;
 position:absolute;
 top:0;
 width:250px;
}
  /*styling for the clock(时钟样式)*/
#clock
{
 position: relative;
 width: 600px;
 height: 600px;
 list-style: none;
 margin: 20px auto;
 background: url('../images/clock.png') no-repeat center;
 
}
#seconds,
#minutes,
#hours
{
 position: absolute;
 width: 30px;
 height: 580px;
 left: 270px;
}
#date
{
 position: absolute;
 top: 365px;
 color: #666;
 right: 140px;
 font-weight: bold;
 letter-spacing: 3px;
 font-family: "微软雅黑";
 font-size: 30px;
 line-height: 36px;
}
#hours
{
 background: url('../images/hands.png') no-repeat left;
 z-index: 1000;
}
#minutes
{
 background: url('../images/hands.png') no-repeat center;
 width:25px;
 z-index: 2000;
}

#seconds
{
 background: url('../images/hands.png') no-repeat right;
 z-index: 3000;
}

3.js代码

(1)需要下载一个js的引用包(百度或者谷歌一下你就知道)

(2)js代码

$(document).ready(function () {

 //动态插入HTML代码,标记时钟 
 var clock = [
  '<ul id="clock">',
  '<li id="date"></li>',
  '<li id="seconds"></li>',
  '<li id="hours"></li>',
  '<li id="minutes"></li>',
  '</ul>'].join('');

 // 逐渐显示时钟,并把它附加到主页面中 
 $(clock).fadeIn().appendTo('body');

 //每一秒钟更新时钟视图的自动执行函数
 //也可以使用此方法: setInterval (function Clock (){})();
 (function Clock() {
  //得到日期和时间
  var date = new Date().getDate(),  //得到当前日期
   hours = new Date().getHours(),  //得到当前小时
   minutes = new Date().getMinutes();  //得到当前分钟
   seconds = new Date().getSeconds(),  //得到当前秒
    ms = new Date().getMilliseconds();//得到当前毫秒
  //将当前日期显示在时钟上
  $("#date").html(date);
  //获取当前秒数,确定秒针位置
  var srotate = seconds + ms / 1000;
  $("#seconds").css({
   //确定旋转角度
   'transform': 'rotate(' + srotate * 6 + 'deg)',  
  });
  //获取当前分钟数,得到分针位置
  var mrotate = minutes + srotate / 60; 
  $("#minutes").css({
   'transform': 'rotate(' + mrotate * 6 + 'deg)',
   //提高浏览器的兼容性
   '-moz-transform': 'rotate(' + mrotate * 6 + 'deg)',
   '-webkit-transform': 'rotate(' + mrotate * 6 + 'deg)'
  });
  //获取当前小时,得到时针位置
  var hrotate = hours % 12 + (minutes / 60);
  $("#hours").css({
   'transform': 'rotate(' + hrotate * 30 + 'deg)',
   //提高浏览器的兼容性
   '-moz-transform': 'rotate(' + hrotate * 30 + 'deg)',
   '-webkit-transform': 'rotate(' + hrotate * 30 + 'deg)'
  });
  //每一秒后执行一次时钟函数
  setTimeout(Clock, 1000);
 })();
});

4.一些必要的图片素材(c此处不再一一列举或展示)

注释:

1.Transform 属性

JavaScript之创意时钟项目(实例讲解)

2.rotate() 方法

JavaScript之创意时钟项目(实例讲解)

以上这篇JavaScript之创意时钟项目(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js验证表单大全
Nov 25 Javascript
img标签中onerror用法
Aug 13 Javascript
javascript 冒泡排序 正序和倒序实现代码
Dec 14 Javascript
jquery星级插件、支持页面中多次使用
Mar 25 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
node.js中的fs.renameSync方法使用说明
Dec 16 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
js实现图片轮播效果
Dec 19 Javascript
js插件dropload上拉下滑加载数据实例解析
Jul 27 Javascript
浅谈js数据类型判断与数组判断
Aug 29 Javascript
JS创建对象的写法示例
Nov 04 Javascript
Angular通过指令动态添加组件问题
Jul 09 Javascript
浅谈js的解析顺序 作用域 严格模式
Oct 23 #Javascript
基于Vue2.0+ElementUI实现表格翻页功能
Oct 23 #Javascript
React操作真实DOM实现动态吸底部的示例
Oct 23 #Javascript
利用pm2部署多个node.js项目的配置教程
Oct 22 #Javascript
vue.js中父组件调用子组件的内部方法示例
Oct 22 #Javascript
vue 1.x 交互实现仿百度下拉列表示例
Oct 21 #Javascript
JS返回顶部实例代码
Aug 09 #Javascript
You might like
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
Python过滤列表用法实例分析
2016/04/29 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
解决python线程卡死的问题
2019/02/18 Python
pandas DataFrame运算的实现
2020/06/14 Python
Django websocket原理及功能实现代码
2020/11/14 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
大学生实习感言
2014/01/16 职场文书
廉洁自律承诺书
2014/03/27 职场文书
求职意向书
2014/04/01 职场文书
受伤赔偿协议书
2014/09/24 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python
详解Python自动化之文件自动化处理
2021/06/21 Python
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS