<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
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |