Bonsoir,
J'ai mis le sujet dans la section "JavaScript" mais la solution pourrait peut-être se trouver du côté de CSS...
Vous avez remarqué : lorsque vous écrivez un message sur le forum ici présent le <textarea> s'adapte automatiquement au contenu que vous êtes en train d'écrire. L'éditeur de WordPress fait de même.
Comme j'ai la flemme j'ai adopté la classe utilisé par Alsacréations, elle est très bien (".autosize"), puis je me suis fais ma petite fonction. Pour le coup je n'ai pas pris la fonction utilisé sur Alsacréations, elle fonctionne à priori très bien mais, minifiée et optimisé par un parseur JS, j'ai du mal à la comprendre et comme je voulais comprendre le principe appliqué ici... Je me suis donc créé ma propre fonction à partir de zéro :
Un pen : Textarea autosize
Mon problème est que je suis obligé d'ajouter un "nombre magique", un correctif que j'ai fixé plus ou moins arbitrairement à 6px, sinon j'ai une barre de défilement verticale et disgracieuse qui s'invite (pour rien du coup). Du coup j'ai un effet de bord : si je commence à remplir le <textarea> de manière conséquente je peux avoir un espace vide qui peut devenir important à la fin du champ. Rien de rédhibitoire... mais ça m'énerve...
Le problème est peut-être en lien avec la hauteur de ligne utilisée par la font (?), je ne sais trop...
Comment corriger le tir ?
J'ai mis le sujet dans la section "JavaScript" mais la solution pourrait peut-être se trouver du côté de CSS...
Vous avez remarqué : lorsque vous écrivez un message sur le forum ici présent le <textarea> s'adapte automatiquement au contenu que vous êtes en train d'écrire. L'éditeur de WordPress fait de même.
Comme j'ai la flemme j'ai adopté la classe utilisé par Alsacréations, elle est très bien (".autosize"), puis je me suis fais ma petite fonction. Pour le coup je n'ai pas pris la fonction utilisé sur Alsacréations, elle fonctionne à priori très bien mais, minifiée et optimisé par un parseur JS, j'ai du mal à la comprendre et comme je voulais comprendre le principe appliqué ici... Je me suis donc créé ma propre fonction à partir de zéro :
/**
* Ajuste la hauteur du champ par rapport au contenu
* @param {NodeList} input Liste d'objets textarea
*/
function textareaAutosize(input) {
const adjustHeight = () => {
input.style.height = 'auto'
input.style.height = `${input.scrollHeight + 6}px` // @note L'ajout de quelques pixels permet d'éviter l'affichage de la barre de défilement verticale. Un nombre magique [decu]
}
window.addEventListener('load', adjustHeight)
window.addEventListener('resize', adjustHeight)
input.addEventListener('input', adjustHeight)
}
document.querySelectorAll('textarea.autosize').forEach(textarea => textareaAutosize(textarea))
Un pen : Textarea autosize
Mon problème est que je suis obligé d'ajouter un "nombre magique", un correctif que j'ai fixé plus ou moins arbitrairement à 6px, sinon j'ai une barre de défilement verticale et disgracieuse qui s'invite (pour rien du coup). Du coup j'ai un effet de bord : si je commence à remplir le <textarea> de manière conséquente je peux avoir un espace vide qui peut devenir important à la fin du champ. Rien de rédhibitoire... mais ça m'énerve...
Le problème est peut-être en lien avec la hauteur de ligne utilisée par la font (?), je ne sais trop...
Comment corriger le tir ?