シンプルな 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:サンプル・デモ