Last active
May 27, 2018 13:29
-
-
Save temmings/0f1a6a9eed6e60921f74b115f3c41563 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="ja"> | |
<head> | |
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"> | |
<meta http-equiv="Content-Script-Type" content="text/javascript"> | |
<meta http-equiv="Content-Style-Type" content="text/css"> | |
<title>文字マウスストーカー</title> | |
<style type="text/css"> | |
#myText { | |
font-style: italic; | |
font-weight: bold; | |
font-family: 'comic sans ms', verdana, arial; | |
color: gold; | |
position: absolute;top: 0;left: 0;z-index: 3000;cursor: default;} | |
#myText div {position: relative;} | |
#myText div div {position: absolute;top: 0;left: 0;text-align: center;} | |
</style> | |
<script type="text/javascript"> | |
<!-- | |
var msg = ""; | |
var size = 24; | |
var circleY = 0.75; var circleX = 2; | |
var letter_spacing = 5; | |
var diameter = 10; | |
var rotation = 0.4; | |
var speed = 0.3; | |
if (!window.addEventListener | |
&& !window.attachEvent | |
|| !document.createElement) | |
throw 'error'; | |
msg = msg.split(''); | |
var n = msg.length - 1, a = Math.round(size * diameter * 0.208333), currStep = 20, | |
ymouse = a * circleY + 20, xmouse = a * circleX + 20, y = [], x = [], Y = [], X = [], | |
o = document.createElement('div'), oi = document.createElement('div'), | |
b = document.compatMode && document.compatMode != "BackCompat"? document.documentElement : document.body, | |
mouse = function(e){ | |
e = e || window.event; | |
ymouse = !isNaN(e.pageY)? e.pageY : e.clientY; // y-position | |
xmouse = !isNaN(e.pageX)? e.pageX : e.clientX; // x-position | |
}, | |
makecircle = function(){ // rotation/positioning | |
if(init.nopy){ | |
o.style.top = (b || document.body).scrollTop + 'px'; | |
o.style.left = (b || document.body).scrollLeft + 'px'; | |
}; | |
currStep -= rotation; | |
for (var d, i = n; i > -1; --i){ // makes the circle | |
d = document.getElementById('iemsg' + i).style; | |
d.top = Math.round(y[i] + a * Math.sin((currStep + i) / letter_spacing) * circleY - 15) + 'px'; | |
d.left = Math.round(x[i] + a * Math.cos((currStep + i) / letter_spacing) * circleX) + 'px'; | |
}; | |
} | |
var tMsg = ' '; | |
var lastTLocale = ''; | |
function digi(){ | |
var t = tMsg; | |
var time = new Date(); | |
var Hour = time.getHours(); | |
if(Hour < 12){ | |
if(lastTLocale!= 'info1'){ | |
var date = new Date(), | |
m = new Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"), | |
w = new Array("㊐", "㊊", "㊋", "㊌", "㊍", "㊎", "㊏"), | |
Wareki = date.getFullYear(), | |
month = m[date.getMonth()], | |
day = date.getDate(), | |
week = w[date.getDay()], | |
Hour = date.getHours(), | |
Min = date.getMinutes(), | |
Sec = date.getSeconds(); | |
if(Hour <= 9) { | |
Hour = "0" + Hour; | |
} | |
if(Min <= 9) { | |
Min = "0" + Min; | |
} | |
if(Sec <= 9) { | |
Sec = "0" + Sec; | |
} | |
var Eto = new Array("子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"), | |
EtoNum = (Wareki + 8) % 12; | |
t = Eto[EtoNum] + "◆" + " " + month + day + "日" + " " + week + " " + "★" + "★" + " " + date.toLocaleDateString("ja-JP-u-ca-japanese", { era: "long", year: "numeric" }).replace(/\u200e/g, "").replace(" ", "").replace(/(^|[^\d])1(?=$|[^\d])/, '$1元') + " " + "◆" + Hour + ":" + Min + ":" + Sec; | |
lastTLocale = 'info1'; | |
} | |
else{ | |
if(lastTLocale != 'info2'){ | |
var date = new Date(), | |
m = new Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"), | |
w = new Array("㊐", "㊊", "㊋", "㊌", "㊍", "㊎", "㊏"), | |
Wareki = date.getFullYear(), | |
month = m[date.getMonth()], | |
day = date.getDate(), | |
week = w[date.getDay()], | |
Hour = date.getHours(), | |
Min = date.getMinutes(), | |
Sec = date.getSeconds(); | |
var Eto = new Array("子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"), | |
EtoNum = (Wareki + 8) % 12; | |
t = Eto[EtoNum] + "◆" + " " + month + day + "日" + " " + week + " " + "★" + "★" + " " + date.toLocaleDateString("ja-JP-u-ca-japanese", { era: "long", year: "numeric" }).replace(/\u200e/g, "").replace(" ", "").replace(/(^|[^\d])1(?=$|[^\d])/, '$1元') + " " + "◆" + Hour + ":" + Min + ":" + Sec; | |
lastTLocale = 'info2'; | |
} | |
var currentLength = msg.length; | |
if (t != tMsg) { | |
tMsg=t; | |
// 状態の変更 | |
msg = t.split(''); | |
n = msg.length - 1; | |
// 文字要素の変更 | |
for (var i = Math.max(currentLength, msg.length) - 1; i > -1; --i) | |
{ | |
var d = i < currentLength ? document.getElementById('iemsg' + i) : null; | |
if (d) | |
{ | |
if (i < t.length) | |
{ | |
// 既存要素の内容変更 | |
d.innerHTML = msg[i]; | |
} | |
else | |
{ | |
// 不要になった要素の削除 | |
d.parentElement.removeChild(d); | |
} | |
} | |
else | |
{ | |
// 不足要素の追加 | |
d = document.createElement('div'); | |
d.id = 'iemsg' + i; | |
d.style.height = d.style.width = a + 'px'; | |
d.appendChild(document.createTextNode(msg[i])); | |
oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0; | |
} | |
} | |
}; | |
ascroll = function(){ | |
ymouse += window.pageYOffset; | |
xmouse += window.pageXOffset; | |
window.removeEventListener('scroll', ascroll, false); | |
}; | |
o.id = 'myText'; o.style.fontSize = size + 'px'; | |
} | |
} | |
} | |
function drag(){ | |
y[0] = Y[0] += (ymouse - Y[0]) * speed; | |
x[0] = X[0] += (xmouse - 20 - X[0]) * speed; | |
for (var i = n; i > 0; --i){ | |
y[i] = Y[i] += (y[i-1] - Y[i]) * speed; | |
x[i] = X[i] += (x[i-1] - X[i]) * speed; | |
}; | |
makecircle();digi(); | |
} | |
function init(){ | |
if(!isNaN(window.pageYOffset)){ | |
ymouse += window.pageYOffset; | |
xmouse += window.pageXOffset; | |
} else init.nopy = true; | |
for (var d, i = n; i > -1; --i){ | |
d = document.createElement('div'); d.id = 'iemsg' + i; | |
d.style.height = d.style.width = a + 'px'; | |
d.appendChild(document.createTextNode(msg[i])); | |
oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0; | |
}; | |
o.appendChild(oi); document.body.appendChild(o); | |
setInterval(drag, 25); | |
} | |
if (window.addEventListener){ | |
window.addEventListener('load', init, false); | |
document.addEventListener('mouseover', mouse, false); | |
document.addEventListener('mousemove', mouse, false); | |
if (/Apple/.test(navigator.vendor)) | |
window.addEventListener('scroll', ascroll, false); | |
} | |
else if (window.attachEvent){ | |
window.attachEvent('onload', init); | |
document.attachEvent('onmousemove', mouse); | |
} | |
// --> | |
</script> | |
</head> | |
<body bgcolor="black"> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment