js 构造函数创建钟表
翻出来之前的一些效果,觉得这个时钟还挺好玩的就写出来共大家分享:
HTML代码如下:
<div id="box"> </div>
当前盒子用于插入钟表内容;
js代码如下:
<script>
function clock(size,panBorderWidth){
this.size = size || 400;
this.pan;
this.panBorderWidth = panBorderWidth || 5;
this.sp;
this.mp;
this.hp;
}
clock.prototype = {
init: function(){
this.makepan();
this.makeKeDu();
this.makeSp();
this.makeMp();
this.makeHp();
this.moveP();
this.makeTxt();
},
makepan:function(){
this.pan = $("<div>").css({ //创建表盘面
width: this.size,
height: this.size,
borderRadius: "50%",
border: this.panBorderWidth+"px solid #333",
background:"#9be5a7",
position:"relative",
margin: "50px auto 0"
}).appendTo($("#box"));
$("<div>").css({ //创建中心点
width:"20px",
height:"20px",
background:"#333",
borderRadius:"50%",
position:"absolute",
left:0,
top:0,
right:0,
bottom:0,
zIndex:1000,
margin:"auto"
}).appendTo(this.pan)
},
makeKeDu: function(){
var w,h; //整点刻度 以及 普通刻度
for(var i = 0;i<60;i++){
if(i%5 == 0){
w = 3;
h = 15;
}
else{
w = 1;
h = 10;
}
var sp = $("<span>").css({ //刻度的创建
display: "inline-block",
width: w + "px",
height: h + "px",
background: "#333",
position: "absolute",
left: 0,
right: 0,
margin: "0 auto",
transform: "rotate("+(6*i)+"deg)",
transformOrigin: "center 200px" //设置旋转中心点
}).appendTo(this.pan)
}
},
makeSp: function(){
this.sp = $("<div>").css({
width: "1px",
height: "170px",
background:"#f00",
position: "absolute",
left: 0,
right: 0,
top: "30px",
zIndex: 1,
margin: "0 auto",
transformOrigin: "center bottom"
}).appendTo(this.pan);
},
makeMp: function(){
this.mp = $("<div>").css({
width: "3px",
height: "120px",
background:"#f0f",
position: "absolute",
left: 0,
right: 0,
top: "80px",
zIndex: 1,
margin: "0 auto",
transformOrigin: "center bottom"
}).appendTo(this.pan);
},
makeHp: function(){
this.hp = $("<div>").css({
width: "5px",
height: "80px",
background:"#ff0",
position: "absolute",
left: 0,
right: 0,
top: "120px",
zIndex: 1,
margin: "0 auto",
transformOrigin: "center bottom"
}).appendTo(this.pan);
},
moveP: function(){
var that = this;
setInterval(function(){
var date = new Date;
var s = date.getSeconds();
var m = date.getMinutes();
var h = date.getHours();
that.sp.css({
transform: "rotate("+(6*s)+"deg)"
});
that.mp.css({
transform:"rotate("+((m*6)+(s*6/60))+"deg)" //m*6 分钟当前所在度数 s*0.1是一秒钟转6° 一分钟60s 所以秒针动一下 分针动6/60°
});
that.hp.css({
transform:"rotate("+((h*30)+(m*6/12)+(s*6(60/12)))+"deg)" //同理:h*30 为小时当前所在度数 分针转动一下是6° 表盘总计12小时 秒针动一下6° 相对应的时针转动即 s/60成分 /12成小时转动度数
});
}, 1000)
},
makeTxt: function(){
$("<div class='timer'>").css({ //创建中心点
width:"100px",
color:"#fff",
position:"absolute",
left:"150px",
top: "50px",
textAlign: "center",
zIndex: 0,
margin:"0 auto",
background: "#666",
boxShadow: "0 0 5px #a07474"
}).appendTo(this.pan);
function time(){
var date = new Date;
var s = date.getSeconds();
var miu = date.getMinutes();
var h = date.getHours();
var d = date.getDate();
var mon = date.getMonth() + 1;
var y = date.getFullYear();
if(mon < 10){
mon = "0" + mon
};
if(d < 10){
d = "0" + d
};
if(h < 10){
h = "0" + h
};
if(miu < 10){
miu = "0" + miu
};
if(s < 10){
s = "0" + s
};
var str = y + "-" + mon + "-" + d +" " + h + ":" + miu + ":" + s;
$(".timer").html(str);
}
setInterval(time,1000);
time();
}
}
var clock = new clock();
clock.init();
</script>
上述 size 为 表盘的尺寸 panBorderWidth 为表盘边框
var clock = new clock() //这里未进行设置 即使用默认给出的 400 / 5
也可以自定义尺寸 例如 var clock = new clock ( 100 , 2 )
make pan //即表盘制作
make kedu //即表盘上的刻度制作
make sp //即秒针制作
make mp //即分针制作
make Hp //即时针制作
moveP //即 时针 分针 秒针 移动函数
make txt //即 当前时间文字 制作
css样子可以根据需求自行调整。
实现简单效果如下:

js 构造函数创建钟表的更多相关文章
- 谈谈JS构造函数
//构造函数 //使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法 //当对象被实例化后,构造函数会立即执行它所包含的任何代码 function myObject(msg) ...
- JS对象创建的几种方式整理
本文主要介绍了JS对象创建的几种方式 第一种:Object构造函数创建 var Person = new Object(); Person.name = 'Nike'; Person.age = ...
- JS对象创建的几种方法
最近一直在看JS高级程序设计这本书,有空来梳理一下几种创建对象的方式.话不多说,直接步入正题. 第一种:Object构造函数创建 var Person = new Object(); Person.n ...
- JS中创建函数的三种方式及区别
1.函数声明 function sum1(n1,n2){ return n1+n2; }; 2.函数表达式,又叫函数字面量 var sum2=function(n1,n2){ return n1+n2 ...
- 深入理解js构造函数
JavaScript对象的创建方式 在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式.对象字面量是一种灵活方便的书写方式,例如: ? 1 2 3 4 5 6 var o1 ...
- Bounce.js – 快速创建漂亮的 CSS3 动画效果
Bounce.js 是一个用于制作漂亮的 CSS3 关键帧动画的 JavaScript 库,使用其特有的方式生成的动画效果.只需添加一个组件,选择预设,然后你就可以得到一个短网址或者导出为 CSS 代 ...
- js 构造函数
//构造函数 //使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法 //当对象被实例化后,构造函数会立即执行它所包含的任何代码 function myObject(ms ...
- JS构造函数的用法和JS原型
$(function(){ var rec = new Rectangle(5, 10); //alert(rec.width + "*" + rec.height + " ...
- JS函数创建的具体过程
JS函数创建的过程: 1.新建Object对象F,类型设置为Function 2.设置F.__proto__ = Function.prototype 3.设置F.constructor = Func ...
随机推荐
- Cheatsheet: 2017 03.01 ~ 03.31
Web New Year, New Blog Day 10 - Using JetBrains Rider with a .NET Core Console Application JavaScrip ...
- 四层协议和Socket编程
<四层协议图> <Soclet编程模型图>
- unity3d之相机跟随人物
一.第三人称视角 _1 先设置好相机与玩家之间的角度 给相机添加代码 using UnityEngine; using System.Collections; namespace CompletePr ...
- 深入理解javascript原型和闭包_____全部
http://www.cnblogs.com/wangfupeng1988/p/3977924.html
- TransitionEnd事件
定义和用法: transitionend 事件在 CSS 完成过渡后触发. 注意: 如果过渡在完成前移除,例如 CSS transition-property 属性被移除,过渡事件将不被触发. 浏览器 ...
- C# mvc读取模板并修改上传到web
C# mvc读取模板并修改上传到web 后台: public FileResult GetXls() { FileStream fs = new FileStream(System.Web.HttpC ...
- Redis缓存方案
1 Redis简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发 ...
- WPF DatePicker日期控件只显示年月
1.需要引用2个类,第一个类DatePickerCalendar public class DatePickerCalendar { public static readonly Dependency ...
- JDK/bin下工具列表说明
JDK/bin下工具列表说明 appletviewer.exe:一种执行HTML文件上的Java小程序类的Java浏览器 apt.exe:注解处理工具(Annotation Processing To ...
- Excel使用SUMIF函数注意事项
sumif函数的公式使用方法如下: =sumif(查询匹配的区域,条件,汇总求和的区域) 条件可以是“>10”或"=10"这种格式.其中“查询匹配区域”和“汇总求和区域”需要 ...