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 ...
随机推荐
- css兼容小问题
1.RGBA在CSS3.0体现,不向下兼容: 2.非float元素和float元素在一起版本时,非float元素会排斥float元素,为避免换行,float元素应优先显示(放非float元素之前)
- 三:SSM框架整合思路
一:jar包 1.spring(包括springmvc) 2.mybatis 3.mybatis-spring整合包 4.数据库驱动 5.第三方连接池 6.json依赖包jackson 二:整合思路 ...
- Struts2 学习(二)
一.Struts2 配置文件 1.配置多个配置文件 在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿. 为了避免struts.xm ...
- python7
字典-dict 字典也是一种组合数据,没有顺序的组合数据,数据以键值对的方式存在 字典的定义 1.创建空字符串 变量 = {} 或者 变量 = dict() 2 ...
- Stirling数
第一类: 定义 第一类Stirling数表示表示将 n 个不同元素构成m个圆排列的数目.又根据正负性分为无符号第一类Stirling数 和带符号第一类Stirling数 .有无符号Stir ...
- MySQL行(记录)详细操作
一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...
- filter() 方法创建一个新数组
filter快速过滤创建一个新数组 var new_array = arr.filter(callback(element[, index[, array]])[, thisArg]) 参数节 cal ...
- 关于 class 的命名
class名称中只出现小写字符和破折号 使用有组织或目的明确的名称,不使用表现形式 基于最近的的父class 作为新class的前缀 使用 .js-* 来标识行为,并且不要将这些class包含到css ...
- 【热门活动】开年好运开门来!送祝福,赢iPad
羊年新的云端征程起航,阿里云邀请了众多云上客户给大家送祝福啦,听听他们的寄语,用云计算增强你的竞争力,一起赢在云端! 想赢iPad吗?参与我们的微博活动,和大家一起送上云端祝福,就有机会把iPad带回 ...
- .net CombinedGeometry的合并模式
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="h ...