JSFiddle - React, Tailwind, and code Playground
HTML
<div class="rectangle">
</div>
<div class="bottom-space">
<div class="article-title-about" id="aboutTitle"><span id="text" alt="About Me"></span>
<div class="console-underscore" id="console">_</div>
</div>
</div>
<div class="rectangle2">
</div>
CSS
@import url("https://fonts.googleapis.com/css?family=Dosis:800");
/*
Title
*/
*{
margin:0;
padding:0;
}
.rectangle {
width: 100%;
height: 800px;
background-color: red;
}
.rectangle2 {
width: 100%;
height: 100px;
background-color: blue;
}
.article-title-about {
padding-bottom: 20px;
text-transform: uppercase;
font-size: 40px;
line-height: 1.5em;
font-family: 'Dosis', sans-serif;
color: #333;
margin: auto;
display: block;
text-align: center;
}
.console-underscore {
display: inline-block;
position: relative;
top: -0.14em;
left: 10px;
}
JavaScript
consoleText(['HELLO,', 'HERE IS A BIT ABOUT ME,', 'ENJOY!'], 'text', ['#333', '#333', '#333']);
function consoleText(words, id, colors) {
"use strict";
if (colors === undefined) {
colors = ['#fff'];
}
var visible = true;
var con = document.getElementById('console');
var letterCount = 1;
var x = 1;
var waiting = false;
var target = document.getElementById(id);
target.setAttribute('style', 'color:' + colors[0]);
window.setInterval(function() {
if (letterCount === 0 && waiting === false) {
waiting = true;
target.innerHTML = words[0].substring(0, letterCount);
window.setTimeout(function() {
var usedColor = colors.shift();
colors.push(usedColor);
var usedWord = words.shift();
words.push(usedWord);
x = 1;
target.setAttribute('style', 'color:' + colors[0]);
letterCount += x;
waiting = false;
}, 1000);
} else if (letterCount === words[0].length + 1 && waiting === false) {
waiting = true;
window.setTimeout(function() {
x = -1;
letterCount += x;
waiting = false;
}, 1000);
} else if (waiting === false) {
target.innerHTML = words[0].substring(0, letterCount);
letterCount += x;
}
}, 120);
window.setInterval(function() {
if (visible === true) {
con.className = 'console-underscore hidden';
visible = false;
} else {
con.className = 'console-underscore';
visible = true;
}
}, 400);
}