私があなたを正しく理解していれば、あなたは次のような効果を探しています:
http://jsfiddle.net/2RRWS/
私のコードは、次のような html 構造を想定しています。
<div id="scrollContainer">
<p>Some text</p>
<p>More text</p>
...
</div>
そして、必要に応じて含まれる div の幅/高さを設定するためのいくつかの CSS。また、「薄暗い」段落と「強調表示された」段落のいくつかのクラスを想定しています。
おそらくこれを行うためのよりクリーンな方法がありますが、これは私がまとめたものであり、うまくいくようです...
var $container = $("#scrollContainer"),
$ps = $container.find("p"),
containerHeight = $container.height(),
contentHeight = 0,
scrollTop = 0;
// figure out the height of the content
$ps.each(function() {
contentHeight += $(this).outerHeight();
});
// add some blank space at the beginning and end of the content so that it can
// scroll in from the bottom
$("<div></div>").css("height", 400).appendTo($container).clone().prependTo($container);
setInterval(function() {
if (paused)
return;
// if we've gone off the end start again
if (scrollTop > contentHeight + containerHeight)
scrollTop = 0;
// scroll up slightly
$container.scrollTop(scrollTop++);
$ps.removeClass("highlighted") // for each paragraph...
.addClass("dimmed") // dim it
.each(function() { // unless it is in view
var $this = $(this),
top = $this.position().top,
height = $this.height();
if (top > 0 && top + height < containerHeight)
$(this).addClass("highlighted").removeClass("dimmed");
});
}, 20);
$container.hover(function() {
paused = true;
}, function() {
paused = false;
});
編集:コメントに従って「一時停止」機能を実装するように更新されました。http://jsfiddle.net/2RRWS/8/