自動縦スクロール

お知らせ的なものを、狭いエリア内で縦に自動スクロールさせたいんです、と言われたのでちょっと調べてみました。こんな感じでできそうです。

div#ticker {
width: 800px;
height: 50px;
overflow-y: scroll;
padding: 2px;
padding-left: 8px;
}
div#ticker pre {
padding: 0;
margin: 0;
white-space: -moz-pre-wrap;	/* Mozilla */
white-space: -pre-wrap;		/* Opera 4-6 */
white-space: -o-pre-wrap;	/* Opera 7 */
white-space: pre-wrap;		/* CSS3 */
word-wrap: break-word;		/* IE 5.5+ */
}
<div id="ticker">
<pre>なにかしらの
コメントを適当に
セットします。</pre>
</div>

以下を適当な名前で保存して、JavaScriptとして組み込みます。

$(window).load(function () {
var area = $("#ticker");
if (area) {
scrollComment(area);
}
});
function scrollComment(area) {
var areaH  = area.height();
var speed = 40;
function animator(currentItem) {
var d = currentItem.height();
if (d > areaH) {
var duration = d * speed;
currentItem.animate({marginTop: -1 * d}, duration, "linear", function() {
currentItem.css("marginTop", areaH);
animator(currentItem);
});
}
};
var cmt = area.children(0);
if (cmt) {
animator(cmt);
area.mouseenter(function() {
cmt.stop();
});
area.mouseleave(function() {
animator(cmt);
});
}
};

こちらを参考にさせていただきました。
(IE6で動かなかったので調整した以外はほとんどそのまんまです。)
http://kachibito.net/snippets/vertical-news-ticker
http://html-coding.co.jp/knowhow/tips/000043/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です