Simple pure JavaScript plugin to rotate text snippets as if they were being typed.
http://schier.co/post/simple-vanilla-javascript-typing-carousel
<link href="https://fonts.googleapis.com/css?family=Raleway:200,100,400" rel="stylesheet" type="text/css" /> | |
<h1>This pen is | |
<span | |
class="txt-rotate" | |
data-period="2000" | |
data-rotate='[ "nerdy.", "simple.", "pure JS.", "pretty.", "fun!" ]'></span> | |
</h1> | |
<h2>A single <span> is all you need.</h2> |
var TxtRotate = function(el, toRotate, period) { | |
this.toRotate = toRotate; | |
this.el = el; | |
this.loopNum = 0; | |
this.period = parseInt(period, 10) || 2000; | |
this.txt = ''; | |
this.tick(); | |
this.isDeleting = false; | |
}; | |
TxtRotate.prototype.tick = function() { | |
var i = this.loopNum % this.toRotate.length; | |
var fullTxt = this.toRotate[i]; | |
if (this.isDeleting) { | |
this.txt = fullTxt.substring(0, this.txt.length - 1); | |
} else { | |
this.txt = fullTxt.substring(0, this.txt.length + 1); | |
} | |
this.el.innerHTML = '<span class="wrap">'+this.txt+'</span>'; | |
var that = this; | |
var delta = 300 - Math.random() * 100; | |
if (this.isDeleting) { delta /= 2; } | |
if (!this.isDeleting && this.txt === fullTxt) { | |
delta = this.period; | |
this.isDeleting = true; | |
} else if (this.isDeleting && this.txt === '') { | |
this.isDeleting = false; | |
this.loopNum++; | |
delta = 500; | |
} | |
setTimeout(function() { | |
that.tick(); | |
}, delta); | |
}; | |
window.onload = function() { | |
var elements = document.getElementsByClassName('txt-rotate'); | |
for (var i=0; i<elements.length; i++) { | |
var toRotate = elements[i].getAttribute('data-rotate'); | |
var period = elements[i].getAttribute('data-period'); | |
if (toRotate) { | |
new TxtRotate(elements[i], JSON.parse(toRotate), period); | |
} | |
} | |
// INJECT CSS | |
var css = document.createElement("style"); | |
css.type = "text/css"; | |
css.innerHTML = ".txt-rotate > .wrap { border-right: 0.08em solid #666 }"; | |
document.body.appendChild(css); | |
}; |
Simple pure JavaScript plugin to rotate text snippets as if they were being typed.
http://schier.co/post/simple-vanilla-javascript-typing-carousel
html,body { | |
font-family: 'Raleway', sans-serif; | |
padding: 3em 2em; | |
font-size: 18px; | |
background: #222; | |
color: #aaa | |
} | |
h1,h2 { | |
font-weight: 200; | |
margin: 0.4em 0; | |
} | |
h1 { font-size: 3.5em; } | |
h2 { | |
color: #888; | |
font-size: 2em; | |
} |