トップページなどで狭いスペース内にコンテンツや画像を表示させる場合にjqueryのタブやスライダーを使用する事がありますが、このMooToolsのスクリプトも良いかもしれませんね。
参考サイト)
Fantastic News Ticker Newsvine-like using Mootools
DEMO
参考サイトのDEMOではコンテンツのタイトルと抜粋記事を縦にスクロールさせて表示しています。以下のDEMOは少しアレンジして画像で表示してみました。いろんな使い道がありそうですね。
バナー(468px × 60px)を縦にスライドさせたDEMO
スクリプト「mootools.svn.js」を以下サイトよりダウンロード。
ダウンロード:http://woorktuts.110mb.com/newsticker/mootools/mootools.svn.js
そして以下のJavaScriptをHTML内に記述、または外部ファイルで読み込みます。
- デモは外部ファイル「bannerticker.js」にして読み込んでいます。
- スクロールのスピード調整は”speed: 1500”
「bannerticker.js」
var Ticker = new Class({
setOptions: function(options) {
this.options = Object.extend({
speed: 1500,
delay: 5000,
direction: 'vertical',
onComplete: Class.empty,
onStart: Class.empty
}, options || {});
},
initialize: function(el,options){
this.setOptions(options);
this.el = $(el);
this.items = this.el.getElements('li');
var w = 0;
var h = 0;
if(this.options.direction.toLowerCase()=='horizontal') {
h = this.el.getSize().size.y;
this.items.each(function(li,index) {
w += li.getSize().size.x;
});
} else {
w = this.el.getSize().size.x;
this.items.each(function(li,index) {
h += li.getSize().size.y;
});
}
this.el.setStyles({
position: 'absolute',
top: 0,
left: 0,
width: w,
height: h
});
this.fx = new Fx.Styles(this.el,{duration:this.options.speed,onComplete:function() {
var i = (this.current==0)?this.items.length:this.current;
this.items[i-1].injectInside(this.el);
this.el.setStyles({
left:0,
top:0
});
}.bind(this)});
this.current = 0;
this.next();
},
pause: function() {
$clear(mytimer);
mytimer = null;
},
resume: function() {
if (mytimer == null) {
this.next();
}
},
next: function() {
this.current++;
if (this.current >= this.items.length) this.current = 0;
var pos = this.items[this.current];
this.fx.start({
top: -pos.offsetTop,
left: -pos.offsetLeft
});
mytimer = this.next.bind(this).delay(this.options.delay+this.options.speed);
}
});
var mytimer = null;
window.addEvent('domready', function() {
var hor = new Ticker('TickerVertical', {
speed : 500, delay : 5000, direction : 'vertical'});
$('stop_scroll').addEvent('click', function() {
$('play_scroll_cont').style.display='block';
$('stop_scroll_cont').style.display='none';
hor.pause();
});
$('play_scroll').addEvent('click', function() {
$('stop_scroll_cont').style.display='block';
$('play_scroll_cont').style.display='none';
hor.resume();
});
});
※デモの場合、head内に以下のように記述
<html> <head> <script language="javascript" src="mootools.svn.js" type="text/javascript"></script> <script language="javascript" src="bannerticker.js" type="text/javascript"></script> </head> <html>
HTML(リスト部分がバナー)
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-script-type" content="text/javascript">
<meta http-equiv="content-style-type" content="text/css">
<script language="javascript" src="mootools.svn.js" type="text/javascript"></script>
<script language="javascript" src="bannerticker.js" type="text/javascript"></script>
<style type="text/css">
#scroller {
width: 480px;
font-size: 11px;
color: #fff;
background: #eaebf8;
}
.scroller-title {
height: 15px;
padding: 5px;
background: #666;
font-weight: bold;
margin-bottom:5px;
}
.scroller-title span.left { float: left;}
.scroller-title span.right { float: right;}
.scroller-title span.right img { vertical-align:middle;}
#play_scroll_cont{display:none;}
#Vertical {
width: 480px;
height: 220px;
display: block;
overflow: hidden;
position: relative;
}
#TickerVertical {
width: 480px;
list-style: none;
margin: 0;
padding: 0;
background: #eaebf8;
}
#TickerVertical a:hover img { border: 1px solid #666;}
#TickerVertical img { border: 1px solid #fff;}
/* バナー */
#TickerVertical li {
margin: 0;
padding: 5px;
float: left;
width: 470px;
height: 62px;
display: block;
}
</style>
</head>
<body>
<div id="scroller">
<div class="scroller-title">
<span class="left">ドメイン&レンタルサーバー</span>
<span class="right">
<div id="controller">
<div id="stop_scroll_cont"><a id="stop_scroll"><img src="images/stop.png" align="absmiddle" /></a> Stop Scroll</div>
<div id="play_scroll_cont"><a id="play_scroll"><img src="images/play.png" align="absmiddle"/></a> Play Scroll</div>
</span>
</div>
</div><!-- /scroller -->
<div id="Vertical">
<ul id="TickerVertical">
<li>ここにバナー</li>
<li>ここにバナー</li>
<li>ここにバナー</li>
<li>ここにバナー</li>
</ul>
</div><!-- /Vertical -->
</body>
</html>