Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<div class="element typed-strings">
                
                <div class="sentence sentence-1">
                    <div class="word-row"><span class="word">First word</span></div>
                    <div class="word-row"><span class="word">Second word</span></div>
                    <div class="word-row"><span class="word"><strong>auto</strong></span></div>
                    <div class="word-row"><span class="word">strong</span></div>
                    <div class="word-row"><span class="word">super</span></div>
                    <div class="word-row"><span class="word">mario</span></div>
                </div>    
            
                <div class="sentence sentence-2">
                    <div class="word-row"><span class="word"><strong>hello</strong></span></div>
                    <div class="word-row"><span class="word"><strong>how is.</strong></span></div>
                    <div class="word-row" data-delay="1400"><span class="word"><strong>life</strong></span></div>
                    <div class="word-row"><span class="word"><strong>GREAT.</strong></span></div>
                </div>
                
            </div>
</body>
</html>
 
var sentence = $('.sentence');
var words = $('.word-row');
var defaultDelay = 500;
var interval = 0;
var waitingTime = 1000;
var firstTimeout = 0;
var secondTimeout = 0;
var animationSpeed = 300;
var wordClass = ".word-row";
words.each(function (index, elem) {
    var $self = $(elem);
    var delay = $self.data('delay') || defaultDelay;
    interval += delay || defaultDelay;
    if ($self.parent().hasClass('sentence-1'))
        firstTimeout += delay;
    if ($self.parent().hasClass('sentence-2'))
        secondTimeout += delay;
});
function resetAll(){
    sentence.show();
    words.css({width: 0});
}
function startSentence(callback) {
    resetAll();
    if(typeof (callback) == "function"){
        callback();
    }
    var first = setTimeout(function () {
        animateWords($('.sentence-1'), function(){
            clearTimeout(first);
        });
    }, 0);
    var second = setTimeout(function () {
        animateWords($('.sentence-2'), function(){
            clearTimeout(second);
            setTimeout(startSentence, waitingTime);
            if(typeof (callback) == "function"){
                callback();
            }
        });
    }, firstTimeout);
}
function animateWords(sentence, callback) {
    var wordDelay = 0;
    var sentenceWords = sentence.find(wordClass);
    sentenceWords.each(function (wIndex, word) {
        var $word = $(word);
        wordDelay += defaultDelay;
        if (wIndex == 0)
            wordDelay = 0;
        var wordTimeout = setTimeout(function () {
            $word.stop(true, true).animate({
                width: "100%"
            }, {
                done: function() {
                    if( (sentenceWords.length-1) == wIndex)
                    {
                        if( typeof (callback) == "function")
                            callback();
                        setTimeout( function() {
                            $(sentence).hide();
                            $(sentence).find(wordzClass).css('width', 0);
                        },  animationSpeed+100);
                    }
                    clearTimeout(wordTimeout);
                }
            });
            }, wordDelay);
    });
}
startSentence();
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers