画像を使ったアナログ時計試作品
画像は5枚。文字盤、短針、長針、秒針、カバーを順に重ね合わせ、3つの針を時刻に合わせて画像を回転させています。
時計のデザイン:Janusはrinkoroさん。金魚すくい、マンドラゴラ、ジャグナーははるぼう。
下記ソースは再利用していただいてかまいません。
<div id="clocks"> <img src="body.png" width="250" height="250" id="image_body" class="clock"> <img src="short.png" width="250" height="250" id="image_short" class="clock"> <img src="long.png" width="250" height="250" id="image_long" class="clock"> <img src="sec.png" width="250" height="250" id="image_sec" class="clock"> <img src="cover.png" width="250" height="250" id="image_cover" class="clock"> </div>
5つの画像に名前を付けて配置しています。
image_bodyの画像の大きさから中心を計算して回転させますので、画像は同じサイズのものを用意してください。
GIF形式またはPNG形式で作りますと背景を透明にすることが可能です。JPEG形式では透明になりません。
<style type="text/css">
.clock {
position: absolute;
}
#clocks {
display: block;
}
</style>
CSSを使って時計を表示する画像を重ねています。
<script type="text/javascript">
window.onload = function() {
//時計の大きさを設定
setWatchSize();
//タイマー起動
timerID = setInterval("moveTimer()",1000);
};
//時計の大きさを設定
function setWatchSize() {
//ベース画像のサイズを取得
var obj = document.getElementById("image_body");
var clockW = obj.width;
var clockH = obj.height;
//ボックスのサイズを設定
document.getElementById("clocks").style.width = clockW + "px";
document.getElementById("clocks").style.height = clockH + "px";
}
//時計を動かす
function moveTimer() {
var date,Hou,Min,Sec,hDeg,mDeg,sDeg;
//日付
date = new Date();
//時間取得
Hou = date.getHours();
Min = date.getMinutes();
Sec = date.getSeconds();
//針の角度取得
hDeg = (Hou % 12) * (360 / 12);
mDeg = Min * (360 / 60);
sDeg = Sec * (360 / 60);
//角度微調整
hDeg += (Min / 60) * (360 / 12);
mDeg += (Sec / 60) * (360 / 60);
//デジタル表示
if (Hou < 10) Hou = "0" + Hou;
if (Min < 10) Min = "0" + Min;
if (Sec < 10) Sec = "0" + Sec;
//短針の表示
document.getElementById("image_short").style.transform = "rotate(" + hDeg + "deg)";
document.getElementById("image_short").style.MozTransform = "rotate(" + hDeg + "deg)";
document.getElementById("image_short").style.WebkitTransform = "rotate(" + hDeg + "deg)";
document.getElementById("image_short").style.msTransform = "rotate(" + hDeg + "deg)";
//長針の表示
document.getElementById("image_long").style.transform = "rotate(" + mDeg + "deg)";
document.getElementById("image_long").style.MozTransform = "rotate(" + mDeg + "deg)";
document.getElementById("image_long").style.WebkitTransform = "rotate(" + mDeg + "deg)";
document.getElementById("image_long").style.msTransform = "rotate(" + mDeg + "deg)";
//秒針の表示
document.getElementById("image_sec").style.transform = "rotate(" + sDeg + "deg)";
document.getElementById("image_sec").style.MozTransform = "rotate(" + sDeg + "deg)";
document.getElementById("image_sec").style.WebkitTransform = "rotate(" + sDeg + "deg)";
document.getElementById("image_sec").style.msTransform = "rotate(" + sDeg + "deg)";
}
</script>
1秒ごとに3つの針の角度を計算して、画像を回転させています。