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