シンプルな News Ticker を探していたところ、条件にピッタリ合ったプラグインを見つけたので紹介します。

Webサイト上の限られたスペースを有効活用できる」ことがウリの News Ticker は、複数にわたる情報を表示させたいときに便利です。

オリジナルは BlackFlag 様が制作。
以下、簡単な説明とサンプルデモを。

jQuery Simple News Ticker:サンプル・デモ

HTML 表記

<div class="ticker" rel="fade">
<ul>
<li><a href="#1">このテキストはNewsTicker用のダミーテキスト[1]です。</a></li>
<li><a href="#2">このテキストはNewsTicker用のダミーテキスト[2]です。</a></li>
<li><a href="#3">このテキストはNewsTicker用のダミーテキスト[3]です。</a></li>
<li><a href="#4">このテキストはNewsTicker用のダミーテキスト[4]です。</a></li>
<li><a href="#5">このテキストはNewsTicker用のダミーテキスト[5]です。</a></li>
</ul>
</div>

リスト全体を div ブロック要素で囲み、「.ticker」というクラス名を付与。
さらに、そのブロック要素に対して、 News Ticker のエフェクトを何にするか rel属性を使って指示します。

rel属性で指定できるエフェクトは3種類。

  • [fade]:フェードアウト、フェードインでの切り替え
  • [roll]:下から上へのスライドイン
  • [slide]:右から左へのスライドイン

CSSの表記

続いてCSS側の設定です。

.ticker {
margin: 0 auto;
padding: 10px 0;
width: 600px;
text-align: left;
border: #ccc 1px solid;
background-color: #f6f6f6;
position: relative;
overflow: hidden;
}

.ticker ul {
width: 100%;
position: relative;
}

.ticker ul li {
width: 100%;
display: none;
}

エフェクトの種類に関係なく、CSSの記述方法はすべて同じ。
設定によって、わざわざ書き換えなくて済むので嬉しいですね。

JQueryの表記

最後に、以下が実際に News Ticker を動かすスクリプトコードになります。

<script>
$(function(){
	$(window).load(function(){
		var $setElm = $('.ticker');
		var effectSpeed = 1000;
		var switchDelay = 6000;
		var easing = 'swing';

		$setElm.each(function(){
			var effectFilter = $(this).attr('rel');

			var $targetObj = $(this);
			var $targetUl = $targetObj.children('ul');
			var $targetLi = $targetObj.find('li');
			var $setList = $targetObj.find('li:first');

			var ulWidth = $targetUl.width();
			var listHeight = $targetLi.height();
			$targetObj.css({height:(listHeight)});
			$targetLi.css({top:'0',left:'0',position:'absolute'});

			if(effectFilter == 'fade') {
				$setList.css({display:'block',opacity:'0',zIndex:'98'}).stop().animate({opacity:'1'},effectSpeed,easing).addClass('showlist');
				setInterval(function(){
					var $activeShow = $targetObj.find('.showlist');
					$activeShow.animate({opacity:'0'},effectSpeed,easing,function(){
						$(this).next().css({display:'block',opacity:'0',zIndex:'99'}).animate({opacity:'1'},effectSpeed,easing).addClass('showlist').end().appendTo($targetUl).css({display:'none',zIndex:'98'}).removeClass('showlist');
					});
				},switchDelay);
			} else if(effectFilter == 'roll') {
				$setList.css({top:'3em',display:'block',opacity:'0',zIndex:'98'}).stop().animate({top:'0',opacity:'1'},effectSpeed,easing).addClass('showlist');
				setInterval(function(){
					var $activeShow = $targetObj.find('.showlist');
					$activeShow.animate({top:'-3em',opacity:'0'},effectSpeed,easing).next().css({top:'3em',display:'block',opacity:'0',zIndex:'99'}).animate({top:'0',opacity:'1'},effectSpeed,easing).addClass('showlist').end().appendTo($targetUl).css({zIndex:'98'}).removeClass('showlist');
				},switchDelay);
			} else if(effectFilter == 'slide') {
				$setList.css({left:(ulWidth),display:'block',opacity:'0',zIndex:'98'}).stop().animate({left:'0',opacity:'1'},effectSpeed,easing).addClass('showlist');
				setInterval(function(){
					var $activeShow = $targetObj.find('.showlist');
					$activeShow.animate({left:(-(ulWidth)),opacity:'0'},effectSpeed,easing).next().css({left:(ulWidth),display:'block',opacity:'0',zIndex:'99'}).animate({left:'0',opacity:'1'},effectSpeed,easing).addClass('showlist').end().appendTo($targetUl).css({zIndex:'98'}).removeClass('showlist');
				},switchDelay);
			}
		});
	});
});
</script>

スクリプトの開始部分で、各数値を指定することでスピードなどを調節することができます。

  • var $setElm = $(‘.ticker’); // News Ticker のリストを囲うエリアのクラス名
  • var effectSpeed = 1000; // 切り替わる際のスピード
  • var switchDelay = 6000; // 切り替わるまでの待機時間
  • var easing = ‘swing’; // 切り替わる際のエフェクトのイージング

切り替わる際のエフェクトには、jQueryメソッドの[easing]が使えます。

また、本家サイトでは他にも細かな使い方を紹介くださっています。
BlackFlag

実装したデモは以下のページからご覧ください。

jQuery Simple News Ticker:サンプル・デモ