Página Inicial

Um jeito simples de manipular a altura de um textarea (autosize.js)

um print do codepen abaixo dizendo: textarea com auto resize; escreva e veja as linhas do textarea se formando de acordo com o tamanho do seu texto (Enter tbm funciona); e no textarea escrito "um texto em uma textarea com resize (vale para textos muito longos que quebram a linha também viu?)", cada palavra separada por enter

Uma coisa bem simples, mas que tenho julgado cada vez mais padrão na web, é a capacidade de fazer os inputs (textareas na verdade) de texto se adequarem ao texto em que o usuário digita, a medida que o mesmo vai digitando. Afinal nessa época em que textões e threads estão se tornando cada vez mais comuns, seria um estresse a mais para o usuário revisar esse texto quando ele está contido em uma única linha gigante.

Bom, recentemente eu precisei implementar esta funcionalidade em uma das features em que estou trabalhando, porém não lembrava de jeito nenhum qual era o nome da bendita. Depois de algumas várias pesquisas, descobri como se chama: autosize. E agora vou ensinar para vocês um jeito simples de implementá-la.

Em resumo, existe um pequeno script (pequeno mesmo, a build tem apenas 3.5kb) chamado autosize que torna o processo todo incrivelmente simples. Você pode usar o npm para instalá-lo no seu projeto:

npm install autosize

Depois disso o processo todo é bem simples, e aqui vou usar o Vue como framework, mas é possível adaptar esse código para qualquer framework do seu gosto

<template>
  <textarea
    rows="1"
    placeholder="Escreva aqui"
    class="resized-textarea"
  />
</template>

<script>
import autosize from 'autosize';

export default {
  mounted() {
    autosize(document.querySelector('.resized-textarea'));
  },
};
</script>


E o resultado final é esse:

See the Pen Textarea com autoresize (Vuejs) by Bianca (@rochabianca) on CodePen.


Você também pode ver mais opções e configurações no github do script.


No mais é isso, espero que tenham curtido o mini tutorial, e até a próxima :D

Quer ficar sabendo quando houverem novos posts aqui no blog? Agora você pode! Basta se juntar ao meu canal no telegram.