テロップを流すサンプル
question:1178848515の回答の修正です。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 //EN"> <html> <head> <script type="text/javascript"> /** * スタイル値取得関数 * elemID : 対象要素ID * IEStyleProp : IE用CSS属性名(aaaBbb形式) * CSSStyleProp : その他用CSS属性名(aaa-bbb形式) */ function getElementStyle(elemID, IEStyleProp, CSSStyleProp){ var elem; if(typeof(elemID) == "string"){ elem = document.getElementById(elemID); }else{ elem = elemID; } if(elem.currentStyle){ return elem.currentStyle[IEStyleProp]; }else if(window.getComputedStyle){ var compStyle = window.getComputedStyle(elem, ""); return compStyle.getPropertyValue(CSSStyleProp); } } /** * テロップ表示関数 * msgs : 表示メッセージ配列 * len : 移動距離(px) * time : 移動間隔(ms) * id : テロップ表示要素ID */ function terop(msgs, len, time, id){ var base = document.getElementById(id); var stylePosition = getElementStyle(base, "position", "position"); if(stylePosition == "" || stylePosition == "static"){ base.style.position = "relative"; } var styleWidth = getElementStyle(base, "width", "width"); if(styleWidth == "" || styleWidth == "auto"){ base.style.width = "100%"; } base.style.overflow = 'hidden'; var msg = document.createElement("span"); base.appendChild(msg); msg.style.position = "relative"; msg.style.left = base.offsetWidth + "px"; msg.style.whiteSpace = "nowrap"; var i = 0; msg.innerHTML = msgs[i]; var move = function(){ if(parseInt(msg.style.left) < -(msg.offsetWidth)){ msg.style.left = (base.offsetWidth + 1) + "px"; i++; if(i >= msgs.length) i = 0; msg.innerHTML = msgs[i]; } if(parseInt(msg.style.left) > base.offsetWidth){ msg.style.left = base.offsetWidth + "px"; }else{ msg.style.left = (parseInt(msg.style.left) - len) + "px"; } setTimeout(move, time); }; move(); } /** * ページ読み込み完了時実行関数 */ function init(){ terop([ "こんなかんじで", "つぎつぎに", "流れていきます。" ], 1, 20, "terop1"); terop([ "<span style='color:blue;'>" + "あああああああああああああああああああああ" + "あああああああああああああああああああああ" + "</span>", "<span style='color:red;'>" + "いいいいいいいいいいいいいいいいいいいいい" + "いいいいいいいいいいいいいいいいいいいいい" + "</span>", "<span style='font-weight:bold;'>" + "ううううううううううううううううううううう" + "ううううううううううううううううううううう" + "</span>" ], 1, 10, "terop2"); }; </script> <style type="text/css" media="screen"> .terop{ border:solid blue 2px; } </style> </head> <body onload="init();"> <div id="terop1" class="terop"></div> <div id="terop2" class="terop"></div> </body> </html>
2007/11/13 文字列の自動折り返しを禁止しました。(<br/>タグでの折り返しはできます)
2007/09/20 移動間隔とテロップ表示要素IDを引数で指定できるようにしました。
2009/03/11 テロップ表示要素がリサイズされて文字列が要素から外れた場合、表示要素の左端から文字列の表示を開始するようにしました。