QA@IT

プルダウンボタンのオプションにも、animationDURATIONスタイルを設定するには。

1693 PV

この前の質問に関連したものですが、下記のソースコードは、
文字マウスストーカーの初期状態にのみにanimationDURATION
スタイルが設定してあるものです。
これに、他のプルダウンボタンのオプションのメッセージにも
animationDURATIONスタイルを設定したいのですが、組み立てが
うまくいきません。どうすれば、いいでしょうか。ご教示ください。

(ソースコード)

<!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>アニメーションスタイルの設定について</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;}
} 

 #myText div {position: relative;}
 #myText div div {position: absolute;top: 0;left: 0;text-align: center;}

</style>

<script type="text/javascript">
<!--

function output(e){
 var selectedIndex = e.selectedIndex;
     document.getElementById("mess").style.background=e[selectedIndex ].style.backgroundColor;

document.getElementById("myText").style.animation="";

 if(selectedIndex==0){
document.getElementById("myText").style.animation=0;
document.getElementById("myText").style.color="white";
    }
 else if(selectedIndex==1){
document.getElementById("myText").style.animation=0;
document.getElementById("myText").style.color="grey";
    }
}


function message(opt) {
    var t = opt.options[opt.selectedIndex].value;
    for(var i = 0; i < t.length; i++) {
        document.getElementById('iemsg' + i).innerHTML = t.charAt(i);
    }
}

;(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="message(this); output(this);">
  <option style="background-color:white;" value="1234">1234</option>
  <option style="background-color:grey;" value="5678">5678</option>
  <option style="background-color:olive; font-weight:bold" value="ABCD" selected>ABCD</option>
 </select> 
</form>

</body>
</html>
ウォッチ

この質問への回答やコメントをメールでお知らせします。