Textarea crezca con el contenido solo CSS
Con el nuevo estándar de HTML5 podemos alcanzar lugares que antes era impensables o territorio de Javascript. A día de hoy, no hay nada nativo para conseguir que un textarea
crezca según vas escribiendo; a no ser que hagas trampas. Es necesario recurrir a artes oscuras como usar el atributo contenteditable
el cual nos permite convertir cualquier elemento HTML en una zona editable. Todo sin Javascript.
Demo
Prueba a escribir y dar algunos saltos de línea. ¡Crece!
HTML
Nos valemos de un div
aunque también sería posible un span
.
<div contenteditable class="fake-textarea"></div>
CSS
Primero hay que darle un aspecto más similar al textarea
con algún borde y a continuación before
para logar imitar el placeholder
. Por último un min-height
para evitar un error visual si se añaden y quitan muchos saltos de línea (gracias a Jorge Villegas).
.fake-textarea {
border: 1px solid black;
width: 30rem;
padding: .5rem;
min-height: 3rem;
}
.fake-textarea:empty::before {
position: absolute;
content: "Write here...";
}
SASS
Si eres de los que usar un preprocesador, puedes usar la siguiente versión.
.fake-textarea
border: 1px solid black
width: 30rem
padding: .5rem
min-height: 3rem
&:empty::before
position: absolute
content: "Write here..."
Todo unido
<html>
<head>
<style>
.fake-textarea {
border: 1px solid black;
width: 30rem;
padding: .5rem;
min-height: 3rem;
}
.fake-textarea:empty::before {
position: absolute;
content: "Escribe aquí...";
}
</style>
</head>
<body>
<div contenteditable class="fake-textarea"></div>
</body>
</html>
Bonus: Necesito enviar con
This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.
Will you buy me a coffee?
You can use the terminal.
ssh customer@andros.dev -p 5555