<link href="https://fonts.googleapis.com/css?family=Raleway:200,100,400" rel="stylesheet" type="text/css" /> <h1> <span class="txt-rotate" data-period="10" data-rotate='[ "Alpha Romero", "Aston Martin", "Toyota", "Honda", "Mazda" ]'></span> </h1> //Автор: Stephen Scaff. @StephenScaff 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; } /* .txt-rotate > .wrap { border-right: 0.08em solid #666 } */ .cursor { display: inline-block; height: 1em; width: 2px; background: #fff; border-right: 1px solid #fff; animation: cursor 0.3s ease both; } @keyframes cursor { 0% { opacity: 0; } 50% { opacity:1; } } var Typer = (function () { var period = parseInt(period, 10) || 2000; var txt = ''; var elements = document.getElementsByClassName('txt-rotate'); var delta = 300 - Math.random() * 100 var isDeleting = false; var loopNum = 0; return { /** * Init */ init: function() { console.log('hi') this.bindEvents(); }, bindEvents: function() { console.log('hi') for (var i=0; i<elements.length; i++) { var toRotate = elements[i].getAttribute('data-rotate'); var period = elements[i].getAttribute('data-period'); if (toRotate) { Typer.txtRotate(elements[i], JSON.parse(toRotate), period); } } }, txtRotate: function(el, toRotate, period) { this.toRotate = toRotate; this.el = el; this.loopNum = 0; this.period = parseInt(period, 10) || 2000; this.txt = ''; Typer.tick(); this.isDeleting = false; }, 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 class="cursor"></span></span>'; var that = this; 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); }, }; })(); Typer.init(); Навигация по записям Dots effect Snow animation