本文实例讲述了jQuery+css实现的时钟效果。分享给大家供大家参考,具体如下:
运行效果截图如下:
这里没有做太多的修饰,简单的实现了一下功能,另外,用的是js的setTimeout方法,当时间长了之后,会有一定的延时,建议,在每隔多少分钟执行一次时钟校准!哈哈,都有误差的嘛,反正我是没给你校。
具体代码如下:
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<title></title>
<script src=\"jquery-1.7.1.min.js\" type=\"text/javascript\"></script>
<script type=\"text/javascript\" >
var addRadian = Math.PI / 30;
var wrapper = null;
var minutes = 0;
var hours = 0;
var secondsLineLength = 14;
var secondLineLength = 20;
function cloneObj(obj1) {
var tempObj = {};
for (var i in obj1) {
if (obj1.hasOwnProperty(i)) {
tempObj[i] = obj1[i];
}
}
return tempObj;
}
function createMinute(po, r, text) {
var minute = [];
minute.push(\'<div class=\"minute\" style=\"left:\');
minute.push(po.x);
minute.push(\'px; top:\');
minute.push(po.y);
minute.push(\'px;\" >\');
minute.push(text);
minute.push(\'</div>\');
wrapper.append(minute.join(\'\'));
}
function createHour(po, r, text) {
var minute = [];
minute.push(\'<div class=\"hour\" style=\"left:\');
minute.push(po.x);
minute.push(\'px; top:\');
minute.push(po.y);
minute.push(\'px;\" >\');
minute.push(text);
minute.push(\'</div>\');
wrapper.append(minute.join(\'\'));
}
function initSeconds(text, center, range) {
var now_seconds = new Date().getSeconds();
now_seconds = now_seconds > 0 ? now_seconds - 1 : 0;
for (var i = 0; i < secondsLineLength + 1; i++) {
createFlower(center, \'●\', range, (i + 1) * secondLineLength, Math.PI / 2 + (now_seconds) * addRadian, true, i == secondsLineLength ? true : false);
}
}
function initMinutes(r, text, center) {
var x = 0,
y = 0;
for (var i = 0; i < 60; i++) {
x = center.x - Math.cos(Math.PI / 2 + i * addRadian) * (r + secondLineLength);
y = center.y - Math.sin(Math.PI / 2 + i * addRadian) * (r + secondLineLength);
createMinute({x: x,y: y}, r, text);
}
minutes = new Date().getMinutes();
waldedMinute(minutes);
}
function initHours(r, text, center) {
var x = 0,
y = 0;
for (var i = 0; i < 60; i+=5) {
x = center.x - Math.cos(Math.PI / 2 + i * addRadian) * (r + secondLineLength);
y = center.y - Math.sin(Math.PI / 2 + i * addRadian) * (r + secondLineLength);
createHour({ x: x, y: y }, r, text);
}
hours = new Date().getHours();
waldedHour(hours);
}
function waldedMinute(index) {
var index = Math.floor((index % 60)) > 0 ? Math.floor((index % 60)) + 1 : 0;
wrapper.find(\".minute:lt(\" + index + \")\").css(\'color\', \"green\");
if (index > 0) {
wrapper.find(\".minute:eq(0)\").css(\'color\', \'#DDDDDD\');
}
}
function waldedHour(index) {
var index = Math.floor((index%12)) > 0 ? Math.floor((index%12)) + 1:0;
wrapper.find(\".hour:lt(\" + index + \")\").css(\'color\', \"green\");
if(index > 0) {
wrapper.find(\".hour:eq(0)\").css(\'color\', \'#494949\');
}
}
function animation(obj, r, radian, range, center, text, last) {
logNowTime();
radian += addRadian;
var x = center.x - Math.cos(radian) * r;
var y = center.y - Math.sin(radian) * r;
obj.css({ \"left\": x, \"top\": y });
if (last && radian > Math.PI * 5 / 2 - 0.1) {
radian = Math.PI / 2;
minutes++;
if (minutes < 60) {
} else {
if (minutes % 60 == 0) {
hours++;
if (hours % 12 != 0) {
} else {
wrapper.find(\".hour\").css(\'color\', \"#494949\");
}
waldedHour(hours);
} else {
wrapper.find(\".minute\").css(\'color\', \"#DDDDDD\");
}
}
waldedMinute(minutes);
}
setTimeout(function () {
animation(obj, r, radian, range, center, text, last);
}, 1000);
}
function createFlower(center, text, range, r, radian, autoAnimate, last) {
var flower = [];
flower.push(\'<div class=\"second\"\');
flower.push(\' style=\"left:\');
flower.push(center.x);
flower.push(\'px; top:\');
flower.push(center.y);
flower.push(\'px;\');
flower.push(autoAnimate ? \'\" >\' : \'color:red;\" >\');
flower.push(text);
flower.push(\'</div>\');
flower = $(flower.join(\'\'));
flower.appendTo(wrapper);
//var r = (index + 1) * secondLineLength;
if (autoAnimate) {
animation(flower, r, radian, range, center, text, last);
}
}
// 查看当前时间
function logNowTime() {
var date = new Date(),
hour = date.getHours(),
minute = date.getMinutes(),
second = date.getSeconds();
hour = hour < 10 ? \"0\" + hour : hour;
minute = minute < 10 ? \"0\" + minute : minute;
second = second < 10 ? \"0\" + second : second;
$(\"#time\").html(\"当前时间-\" + hour + \":\" + minute + \":\" + second);
}
$(document).ready(function () {
wrapper = $(\"#wrapper\"),
width = wrapper.width(),
height = wrapper.height(),
offLeft = parseInt(wrapper.offset().left),
range = {
x: offLeft,
y: 0,
x1: offLeft + width,
y1: height
},
center = {
x: Math.round(width / 2) + offLeft,
y: Math.round(height / 2)
};
initHours(secondLineLength * secondsLineLength + 40, \'●\', center);
initMinutes(secondLineLength * secondsLineLength + 20, \'●\', center);
initSeconds(\'●\', center, range);
});
</script>
<style type=\"text/css\" >
body { margin:0; padding:0; }
#wrapper { margin:0 auto; width:1000px; height:780px; background:black; }
.second { width:12px; height:12px; position:absolute; text-shadow:1px 1px 1px green; color:Green; }
.minute { color:#DDDDDD; position:absolute;}
.hour { color:#494949; position:absolute;}
#time { font-size:30px; line-height:30px; text-shadow:2px 2px 2px green; text-align:center; }
</style>
</head>
<body>
<div id=\"time\"></div>
<div id=\"wrapper\" >
</div>
</body>
</html>
更多关于jQuery特效相关内容感兴趣的读者可查看本站专题:《jQuery常见经典特效汇总》及《jQuery动画与特效用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
本文地址:https://www.stayed.cn/item/4638
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我