JS-E01 - Efeito Máquina de Escrever com JavaScript

JS-E01 - Efeito Máquina de Escrever com JavaScript
Publicado em 28/08/23 21:08
Visualizações: 138

Aprenda a realizar o efeito de maquina de escrever de maneira simplificada

Neste post vou demonstrar como é simples para implementar o efeito de máquina de escrever em uma frase qualquer em seu projeto utilizando o javaScript juntamento com um estilo em CSS.

O primeiro passo é escolher o texto que receberá este efeito, para podermos selecionarmos com o querySelector do JS. Estou utilizando como exemplo o meu próprio site, no elemento onde é apresentado o texto "FullStack PHP | Web Designer", na home.

Passo 1 - A escolha do elemento:

JS-E01 - Efeito Máquina de Escrever com JavaScript

Neste elemento eu apliquei em uma classe chamada headline.

Passo 2 -O efeito em JavaScript:

Código do JS:

//EFEITO MÁQUINA DE ESCREVER

function typeWrite(e) {
    const textoArray = e.innerHTML.split('');
    e.innerHTML = ' ';
    textoArray.forEach(function (letter, i) {
        setTimeout(function () {
            e.innerHTML += letter;
        }, 80 * i);
    });
}

const phrase = document.querySelector('.headline');

typeWrite(phrase);

Para entender o código, a constante phrase(nome que eu escolhi) está selecionando a tag com a classe headline, através querySelector (método do objeto document). A tag selecionada será a tag "p" e todo o seu conteúdo entre a abertura e o fechamento desta tag. Esta seleção é passada como parâmetro para a função typeWrite(nome que escolhi também!!). Neste caso, com o querySelector, somente o primeiro elemento do DOM é selecionado. Se houver mais de um elemento em uma mesma pa?ina, utilize o método querySelectorAll. Para mais informações de seleção de elementos no DOM, clique aqui.

Esta função pega o parâmetro, agora como "e" passa para a constante textArray, utilizando o método método split (de String) sobre o método innerHTML (de Element, obtém a sintaxe HTML dos elementos descendentes). Este valor agora em textArray  é um array contento cada letra e espaço da tag selecionada.

Em seguida o elemento "e" que é a referência da tag "p", recebe dentro de si, com o médoto innerHTML um espaço, um texto vazio.

Em seguida é executo um forEach em textArray, que percorrerá seus elementos do array e para cada elemento (letter) no índice "i" e após o método setTimeOut(executa algo dado um período de tempo passado) vezes o índice, que definirá o tempo para cada elemento letra/espaço. O tempo definido foi 80 milissegundos. Pode ser passado qualquer valor e quanto maior, maior o intervalo entre o aparecimento dos elementos. Esta função tem como callback a adição do elemento letterao elemento e(p) que foi "esvaziado". A partir daí está pronto o efeito!!

Passo 3 - Efeito cursor piscando no CSS:

Eu não utilizei este efeito, pois julquei não aplicável ao meu layout. Em relação a tipografia, será de acordo com a identidade visual implementada. Para o efeito de cursor piscando, basta aplicar no CSS um conteúdo com um frame relacionado à classe ou id do elmento. No meu caso, tendo a classe headlinecomo alvo, ficou da seguinte forma:

.headline:after{
     content: '|';
    margin-left: 5px;
    opacity: 1;
    animation: flash .7s infinite;
}

@keyframes flash{
    0%, 100%{
        opacity: 1;
    }
    50%{
        opacity: 0;
    }
}

Veja também:

Confira mais artigos relacionados

Este website utiliza cookies próprios e de terceiros a fim de personalizar o conteúdo, melhorar a experiência do usuário, fornecer funções de mídias sociais e analisar o tráfego. Para continuar navegando você deve concordar com nossa Política de Privacidade

Sim, eu aceito. Não, eu não aceito.