js+css3制作时钟特效

我们先来看看效果图吧

再来奉上源码

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>CSS3 钟表</title>

<style>

.clock{

position: relative;

width: 200px;

height: 200px;

border-radius: 110px;

border: 10px solid #000;

margin: 200px auto;

}

.line1,.line4{

position: absolute;

background-color: #aaa;

width: 10px;

height: 200px;

left: 50%;

margin-left: -5px;

}

.line2,.line3,.line5,.line6{

position: absolute;

background-color: #ccc;

width: 8px;

height: 200px;

left: 50%;

margin-left: -4px;

}

.line2{

transform: rotate(30deg);

}

.line3{

transform: rotate(60deg);

}

.line4{

transform: rotate(90deg);

}

.line5{

transform: rotate(120deg);

}

.line6{

transform: rotate(150deg);

}

.cover{

position: absolute;

width: 180px;

height: 180px;

background-color: #fff;

left: 50%;

top: 50%;

margin: -90px 0 0 -90px;

border-radius: 90px;

}

.dotted{

position: absolute;

width: 20px;

height: 20px;

background-color: #000;

border-radius: 10px;

left: 50%;

top: 50%;

z-index: 2;

margin: -10px 0 0 -10px;

}

.hour{

position: absolute;

width: 10px;

height: 60px;

background-color: #ccc;

left: 50%;

top: 50%;

margin: -60px 0 0 -5px;

}

.minute{

position: absolute;

width: 8px;

height: 70px;

background-color: #ddd;

left: 50%;

top: 50%;

margin: -70px 0 0 -4px;

}

.seconds{

position: absolute;

width: 6px;

height: 80px;

background-color: red;

left: 50%;

top: 50%;

margin: -80px 0 0 -3px;

}

.minute,.hour,.seconds{

transform-origin: center bottom;

}

</style>

<script>

window.onload = function () {

var hour = document.querySelector(".hour");

var minute = document.querySelector(".minute");

var second = document.querySelector(".seconds");

var h = 0,m = 0,s = 0,ms =0;

setInterval(fn,10);

function fn () {

var date = new Date();

ms = date.getMilliseconds();

s = date.getSeconds()+ms/1000;

m = date.getMinutes()+s/60;

h = date.getHours()%12+m/60;

second.style.WebkitTransform = "rotate("+s*6+"deg)";

minute.style.WebkitTransform = "rotate("+m*6+"deg)";

hour.style.WebkitTransform = "rotate("+h*30+"deg)";

}

}

</script>

</head>

<body>

<div class="clock">

<div class="line1"></div>

<div class="line2"></div>

<div class="line3"></div>

<div class="line4"></div>

<div class="line5"></div>

<div class="line6"></div>

<div class="cover"></div>

<div class="dotted"></div>

<div class="hour"></div>

<div class="minute"></div>

<div class="seconds"></div>

</div>

</body>

</html>

再给大家分享一个网友的作品

<!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>

<meta http-equiv="Content-Type" content="text/html; charset=uft-8">

<title>利用JS和CSS3制作的时钟效果</title>

<style type="text/css">

#clock{width:300px;height:300px;border:15px solid #333;position:relative;

border-radius:300px;

-moz-border-radius:300px;

-webkit-border-radius:300px;

-o-border-radius:300px;

-ms-border-radius:300px;

background:#ddd;

background:radial-gradient(#fff,#ddd);

background:-moz-radial-gradient(#fff,#ddd);

background:-webkit-radial-gradient(#fff,#ddd);

background:-o-radial-gradient(#fff,#ddd);

background:-ms-radial-gradient(#fff,#ddd);

box-shadow:0 0 0 12px #fff inset,0 0 0 16px #000 inset;

-moz-box-shadow:0 0 0 12px #fff inset,0 0 0 16px #000 inset;

-webkit-box-shadow:0 0 0 12px #fff inset,0 0 0 16px #000 inset;

-o-box-shadow:0 0 0 12px #fff inset,0 0 0 16px #000 inset;

-ms-box-shadow:0 0 0 12px #fff inset,0 0 0 16px #000 inset;

}

.clock-core{width:16px;height:16px;background:#f00;position:absolute;left:50%;top:50%;margin:-8px 0 0 -8px;z-index:30;

border-radius:16px;

-moz-border-radius:16px;

-webkit-border-radius:16px;

-o-border-radius:16px;

-ms-border-radius:16px;

}

#clock-h,#clock-m,#clock-s{width:6px;height:70px;background:#333;position:absolute;left:50%;top:50%;margin:-70px 0 0 -3px;z-index:10;

transform-origin:50% 100%;

-moz-transform-origin:50% 100%;

-webkit-transform-origin:50% 100%;

-o-transform-origin:50% 100%;

-ms-transform-origin:50% 100%;

}

#clock-m{height:100px;margin-top:-100px}

#clock-s{width:2px;height:155px;margin:-135px 0 0 -1px;background:#f00;

transform-origin:50% 87.097%;

-moz-transform-origin:50% 87.097%;

-webkit-transform-origin:50% 87.097%;

-o-transform-origin:50% 87.097%;

-ms-transform-origin:50% 87.097%;

}

#clock-h b,#clock-m b{width:0;height:0;font-size:0;border:3px dashed transparent;border-bottom:3px solid #333;position:absolute;left:0;top:-6px}

.big-mark,.small-mark{width:4px;height:12px;background:#333;position:absolute;left:50%;top:0;margin-left:-2px;

transform-origin:50% 0%;

-moz-transform-origin:50% 0%;

-webkit-transform-origin:50% 0%;

-o-transform-origin:50% 0%;

-ms-transform-origin:50% 0%;

}

.small-mark{width:2px;height:5px;background:#999;margin-left:-1px}

.big-mark i{font:700 20px/1.5 Arial;position:absolute;left:-100%;top:12px}

.c60 i{font:700 20px/1.5 Arial;position:absolute;left:-200%;top:12px}

#clock-date{width:170px;height:24px;line-height:24px;background:#fff;color:#666;border:1px solid #ccc;text-align:center;position:absolute;left:50%;bottom:70px;margin:0 0 0 -85px;border-radius:6px}

</style>

<script type="text/javascript">

function clock(){

var $=function(id){return document.getElementById(id)};

//写入刻度DOM,以及刻度的定位

function mark(){

//圆的半径

var r=parseFloat(window.getComputedStyle?window.getComputedStyle($("clock"),null).width:$("clock").currentStyle["width"])/2;

//插入DOM

for(var i=1;i<61;i++){

$("clock-mark").innerHTML+="<b class='c"+i+"'><i></i></b>";

var ci=document.getElementsByClassName("c"+i)[0];

var cii=ci.getElementsByTagName("i")[0];

//利用正弦定理计算刻度的定位

ci.style.left=r+r*(Math.sin(i*6*2*Math.PI/360))+"px";

/*注意正弦的角度制算法和弧度制算法,Math.sin的参数是弧度制算法,所以先把角度转换成弧度,再计算*/

ci.style.top=r-r*(Math.sin((90-i*6)*2*Math.PI/360))+"px";

//计算转动的角度

/*other*/

ci.style.transform="rotate("+i*6+"deg)";

/*FF*/

ci.style.MozTransform="rotate("+i*6+"deg)";

/*webkit*/

ci.style.WebkitTransform="rotate("+i*6+"deg)";

/*opera*/

ci.style.OTransform="rotate("+i*6+"deg)";

/*ms*/

ci.style.msTransform="rotate("+i*6+"deg)";

//大刻度

if(i%5==0){

ci.className="c"+i+" "+"big-mark";

cii.innerHTML=i/5;

}

//小刻度

else{

ci.className="c"+i+" "+"small-mark";

ci.removeChild(cii);

}

//把数字转正

var iRotate=-i*6;

cii.style.transform="rotate("+iRotate+"deg)";

cii.style.MozTransform="rotate("+iRotate+"deg)";

cii.style.WebkitTransform="rotate("+iRotate+"deg)";

cii.style.OTransform="rotate("+iRotate+"deg)";

cii.style.msTransform="rotate("+iRotate+"deg)";

}

}

//指针的转动

function turnR(){

var d=new Date();

var h=d.getHours();

var m=d.getMinutes();

var s=d.getSeconds();

var sRadius=360/60*s;

var mRadius=360/60*m;

//如果需要分针匀速移动,就赋值var mRadius=360/60*m+360/60/60*s

var hRadius=360/12*h+30/60*m;

var ch=$("clock-h");

var cm=$("clock-m");

var cs=$("clock-s");

/*other*/

ch.style.transform="rotate("+hRadius+"deg)";

cm.style.transform="rotate("+mRadius+"deg)";

cs.style.transform="rotate("+sRadius+"deg)";

/*FF*/

ch.style.MozTransform="rotate("+hRadius+"deg)";

cm.style.MozTransform="rotate("+mRadius+"deg)";

cs.style.MozTransform="rotate("+sRadius+"deg)";

/*webkit*/

ch.style.WebkitTransform="rotate("+hRadius+"deg)";

cm.style.WebkitTransform="rotate("+mRadius+"deg)";

cs.style.WebkitTransform="rotate("+sRadius+"deg)";

/*opera*/

ch.style.OTransform="rotate("+hRadius+"deg)";

cm.style.OTransform="rotate("+mRadius+"deg)";

cs.style.OTransform="rotate("+sRadius+"deg)";

/*ms*/

ch.style.msTransform="rotate("+hRadius+"deg)";

cm.style.msTransform="rotate("+mRadius+"deg)";

cs.style.msTransform="rotate("+sRadius+"deg)";

setTimeout(turnR,1000);

}

/*显示日期*/

function clockDate(){

var d=new Date();

var week=["日","一","二","三","四","五","六"];

$("clock-date").innerHTML=d.getFullYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日"+" 星期"+week[d.getDay()];

}

//调用函数

mark();

turnR();

clockDate();

}

window.onload=clock;

</script>

</head>

<body>

<div id="clock">

<b class="clock-core"></b>

<div id="clock-h">

<b></b>

</div>

<div id="clock-m">

<b></b>

</div>

<div id="clock-s"></div>

<div id="clock-mark"></div>

<div id="clock-date"></div>

</div>

</body>

</html>

以上是 js+css3制作时钟特效 的全部内容, 来源链接: utcz.com/z/351206.html

回到顶部