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 ...
随机推荐
- Spring学习(一) IoC
文章部分图片来自参考资料,本文介绍的是 Spring 的两个重要概念,是学习总结. 我们依旧提出几个问题,帮助我们在学习中带着问题解答. 问题 : 如何理解Ioc,它解决了什么难题(或者说是使用它 ...
- 数据结构(四)--- 红黑树(RedBlock-Tree)
文章图片来自邓俊辉老师课件 先提几个问题去思考学习本文 : 红黑树和2-4树(B-Tree)很像,那么它存在的动机又是什么呢 插入和删除操作的逻辑又是怎么样的,时间和空间复杂度可以达到怎么样 和 ...
- npm proxy报错处理
npm经常抽风,动不动安装一个模块就这样了: 提示是否设置了正确的代理地址,解决方法网上有很多,有说取消代理.重新设置代理等等,最简单粗暴解决: 删除nodejs安装路径下面的npmrc文件,再使用淘 ...
- C# XML相关
XmlDocument doc = new XmlDocument(); 1.string类型的xml,如何转换成xml类型 doc.LoadXml("需要传入的string类型的xml&q ...
- Mybatis插入、查询自定义的数据类型的方式
1.首先创建JavaBean对象 package com.zuo.Mybatis.bean; public class PhoneNumber { private String countryCode ...
- C中的私有成员
skynet_context声明在.h里 但定义在.c里面 外部使用的时候无法用ctx->handle获取私有成员,会提示解引用类型错误 必须用.h里函数获取ctx里属性.
- flask-login2的简单使用
#coding:utf8 from flask import Flask, render_template, request, redirect, url_for, flash, abort from ...
- 警告: The web application [ROOT] appears to have started a thread named [Thread-48] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
1. 问题描述 tomcat跑web项目(其中依赖java项目) 出现大量上述警告 项目起不来 关键字 memory leak 内存泄漏 2. 解决方案 难道是程序写的有问题? 最终 将tomcat ...
- C#链接数据库:SQL Server 2008
自己学习C#编程,在WinForm编程中,代码测试连接数据库. 现在sqlserver中测试使用的数据库能否以指定的用户名和密码登录. 如图所示,计算机名为administrator,数据库实例为sq ...
- C++:关于委托类
转自:http://blog.csdn.net/dadalan/article/details/4041931.vs2010已经支持function/bind,能很好实现委托. [说明] 本文不仅介绍 ...