SRC遊んだり書いたり。時々プログラミング

SRCの感想とか技術解説とか、そんな感じのアレ!

jQueryで文字列を1文字ずつ表示するスクリプト(複数行対応)

こんにちは!
今日はjQueryを使い、ゲームのように文字列を1文字ずつ表示するスクリプトをご紹介します。

デモ

使い方

jQueryの読み込み

jQueryを使用するので、Google AJAX Libraries APIからjQueryを読み込みます。
HTMLの<head>内に次の行を追加してください。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

JavaScriptをコピペ

次のコードを<head>内の最後の行にコピー&ペーストして下さい。

<script type="text/javascript">
    $(document).ready(function(){
        var DELAY_SPEED = 100;//文字が流れる速さ
        var FADE_SPEED = 500;//文字のフェードインの速さ
        var str = [];
        $('.fadein > span').each(function(i){//セレクタで指定した要素すべて
            $(this).css('opacity','1');//行を不透明にする
            str[i] = $(this).text();//元のテキストをコピーし
            $(this).text('');//テキストを消す
            var no = i;
            var self = this;
            var interval = setInterval(function(){
                if(no == 0 || $('.fadein > span').eq(no - 1).children('span:last').css('opacity') == 1){//最初の要素または前の要素が全文字表示された時
                    clearInterval(interval);
                    for (var j = 0; j < str[no].length; j++) {
                        $(self).append('<span>'+str[no].substr(j, 1)+'</span>'); 
                        $(self).children('span:last').delay(DELAY_SPEED * j).animate({opacity:'1'}, FADE_SPEED);
                    }
                }
            }, 50);
        });
    });
</script>

HTMLに1文字ずつ表示したい文章を書く

<p class='fadein'>
    <span>あ…ありのまま 今 起こった事を話すぜ!</span><br>
    <span>『おれは奴の前で階段を登っていたと</span><br>
    <span> 思ったらいつのまにか降りていた』</span><br>
    <span>催眠術だとか超スピードだとか</span><br>
    <span>そんなチャチなもんじゃあ 断じてねえ</span><br>
    <span>もっと恐ろしいものの片鱗を味わったぜ…</span><br>
</p>

class='fadein'の子要素になる<span>で囲った文章が、1文字ずつ順番に表示されます。
複数行になる場合は、<span>の外側に<br>タグを記述します。

おまけ

文字が流れる速さや文字のフェードインの速さを調整する場合は、JavaScriptの次の値を変更します。

var DELAY_SPEED = 100;//文字が流れる速さ
var FADE_SPEED = 500;//文字のフェードインの速さ

単位はミリ秒。値が小さいほど速くなります。