下記のソースコードは、 文字マウスストーカーにanimationDURATIONスタイルを設定したのですが、
これを設定したらマウスストーカーの効果が失われてしまいました(*初期状態のみ正常に機能します)。
どのように設定しなおせば、マウスストーカーの効果を失わずに、animationDURATIONスタイルを
セレクトのoptionにも設定できるでしょうか。ご教示ください。
*"文字マウスストーカー"とは、マウスポインタの動きに応じて文字列が付いて回る,技法です。
(ソースコード)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>animationDURATIONスタイルについて</title>
<style type="text/css">
#myText {
font-style: italic;
font-weight: bold;
font-family: 'comic sans ms', verdana, arial;
position: absolute;top: 0;left: 0;z-index: 3000;cursor: default;
-webkit-animation:myText 2s ease-in-out infinite alternate;
-moz-animation:myText 2s ease-in-out infinite alternate;
animation:myText 2s ease-in-out infinite alternate;
}
@-webkit-keyframes myText{
0% {opacity:0;}
100% {opacity:1; color:gold;}
}
@-moz-keyframes myText{
0% {opacity:0;}
100% {opacity:1; color:gold;}
}
@keyframes myText{
0% {opacity:0;}
100% {opacity:1; color:gold;}
}
.mog1 {
font-style: italic;
font-weight: bold;
font-family: 'comic sans ms', verdana, arial;
position: absolute;top: 0;left: 0;z-index: 3000;cursor: default;
-webkit-animation:mog1 2s ease-in-out infinite alternate;
-moz-animation:mog1 2s ease-in-out infinite alternate;
animation:mog1 2s ease-in-out infinite alternate;
}
@-webkit-keyframes mog1{
0% {opacity:0;}
100% {opacity:1; color:blue;}
}
@-moz-keyframes mog1{
0% {opacity:0;}
100% {opacity:1; color:blue;}
}
@keyframes mog1{
0% {opacity:0;}
100% {opacity:1; color:blue;}
}
.mog2 {
font-style: italic;
font-weight: bold;
font-family: 'comic sans ms', verdana, arial;
position: absolute;top: 0;left: 0;z-index: 3000;cursor: default;
-webkit-animation:mog2 2s ease-in-out infinite alternate;
-moz-animation:mog2 2s ease-in-out infinite alternate;
animation:mog2 2s ease-in-out infinite alternate;
}
@-webkit-keyframes mog2{
0% {opacity:0;}
100% {opacity:1; color:red;}
}
@-moz-keyframes mog2{
0% {opacity:0;}
100% {opacity:1; color:red;}
}
@keyframes mog2{
0% {opacity:0;}
100% {opacity:1; color:red;}
}
.mog3 {
font-style: italic;
font-weight: bold;
font-family: 'comic sans ms', verdana, arial;
position: absolute;top: 0;left: 0;z-index: 3000;cursor: default;
-webkit-animation:mog3 2s ease-in-out infinite alternate;
-moz-animation:mog3 2s ease-in-out infinite alternate;
animation:mog3 2s ease-in-out infinite alternate;
}
@-webkit-keyframes mog3{
0% {opacity:0;}
100% {opacity:1; color:olive;}
}
@-moz-keyframes mog3{
0% {opacity:0;}
100% {opacity:1; color:olive;}
}
@keyframes mog3{
0% {opacity:0;}
100% {opacity:1; color:olive;}
}
#myText div {position: relative;}
#myText div div {position: absolute;top: 0;left: 0;text-align: center;}
</style>
<script type="text/javascript">
<!--
var txt1="<div class='mog1'>1</div><div class='mog1'>2</div><div class='mog1'>3</div><div class='mog1'>4</div>";
var txt2="<div class='mog2'>5</div><div class='mog2'>6</div><div class='mog2'>7</div><div class='mog2'>8</div>";
var txt3="<div class='mog3'>A</div><div class='mog3'>B</div><div class='mog3'>C</div><div class='mog3'>D</div>";
function anime1(){
document.getElementById('myText').innerHTML = txt1;
}
function anime2(){
document.getElementById('myText').innerHTML = txt2;
}
function anime3(){
document.getElementById('myText').innerHTML = txt3;
}
function output(e){
var selectedIndex = e.selectedIndex;
document.getElementById("mess").style.background=e[selectedIndex ].style.backgroundColor;
}
;(function(){
var msg = "ABCD";
var size = 26;
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) return;
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;
xmouse = !isNaN(e.pageX)? e.pageX : e.clientX;
},
makecircle = function(){
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){
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';
};
},
drag = function(){
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();
},
init = function(){
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);
},
ascroll = function(){
ymouse += window.pageYOffset;
xmouse += window.pageXOffset;
window.removeEventListener('scroll', ascroll, false);
};
o.id = 'myText'; o.style.fontSize = size + 'px';
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">
<form style="text-align:center;">
<select id="mess" style="background-color:olive; color:black; font-weight:bold;" onchange="output(this)">
<option id="op1" style="background-color:blue;" value="1234" onclick="anime1()">1234</option>
<option id="op2" style="background-color:red;" value="5678" onclick="anime2()">5678</option>
<option id="op3" style="background-color:olive; font-weight:bold" value="ABCD" onclick="anime3(this)" selected>ABCD</option>
</select>
</form>
</body>
</html>