Table des matières
demande
proposition
Maison interface Web js tutoriel Comment construire un plugin JQuery en expansion automatique, partie 1

Comment construire un plugin JQuery en expansion automatique, partie 1

Mar 08, 2025 am 12:38 AM

Les zones de texte en expansion automatique sont très populaires sur des sites comme Facebook. La hauteur de la zone de zone de texte se développe et rétrécit en fonction de la quantité de texte saisie par l'utilisateur. Cela présente plusieurs avantages:

  1. La conception de votre page ne sera pas dominée par les grandes boîtes de zone de texte.
  2. Les formulaires en ligne avec plusieurs zones de texte semblent plus courts et plus faciles à remplir.
  3. Les utilisateurs peuvent afficher tout le texte sans défiler.

Afficher la démonstration de zone de texte étendue ...

Ce didacticiel en trois parties décrit comment créer une zone de texte étendue automatiquement à l'aide de HTML et du plug-in jQuery réutilisable. À la fin de la troisième partie, vous comprendrez comment cela fonctionne et aurez du code qui peut être utilisé dans votre propre projet.

demande

Comme tous les bons développeurs, nous devons comprendre pleinement les exigences du système:

  1. Toute zone de texte sur n'importe quelle page doit être automatiquement élargie si nous en avons besoin.
  2. Cependant, certaines zones de texte peuvent ne pas nécessiter une expansion automatique.
  3. Nous devons être en mesure de spécifier que la hauteur de la zone de texte peut (a) se développer infiniment, ou (b) se développer dans une plage spécifique, par exemple, utilisez la hauteur optimale entre 50 et 200 pixels.
  4. Notre solution doit être réutilisable sur toute page que nous choisissons.
  5. La technologie d'amélioration avancée doit être utilisée pour s'assurer que les utilisateurs sans JavaScript peuvent toujours utiliser la zone de zone de texte standard.
  6. Cette solution doit être compatible avec IE6, Firefox 2, Opera, Safari et Chrome.

proposition

Nous implémentons la solution en tant que plugin jQuery. JQuery est principalement utilisé pour gérer les aspects plus banals tels que le reniflement DOM et la déléguation des événements; vous pouvez facilement réécrire votre code à l'aide d'un autre cadre.

Cependant, comment savons-nous quand nous devons redimensionner la zone de texte et quelle hauteur utiliser?

Tout d'abord, nous pouvons attribuer un gestionnaire d'événements "Keyup" à n'importe quelle zone de texte. Cela appellera une fonction immédiatement après que la touche soit enfoncée et que le texte est modifié.

Nous pouvons ensuite vérifier la propriété DOM ScrollHeight. Cela renverra la hauteur de la pièce de défilement interne, c'est-à-dire la hauteur du texte entré par l'utilisateur. Si nous définissons la hauteur de la zone de texte sur la valeur actuelle de défilement, la barre de défilement deviendra sans importance. Malheureusement, ScrollHeight n'est pas une recommandation W3C, et nous devons surmonter certaines incohérences entre les navigateurs:

  • Dans Firefox, Safari et Chrome, ScrollHeight n'est jamais plus petit que la hauteur de la zone de texte, même si le texte n'est pas ajouté. Ainsi, la boîte se développe, mais la suppression du texte ne le rétrécira pas. Nous pouvons résoudre ce problème en définissant temporairement la hauteur de la zone de texte sur 0px, puis en appliquant la valeur réelle ScrollHeight.
  • Contrairement à la documentation de Mozilla ScrollHeight, Firefox ne semble pas inclure le rembourrage de la zone de texte, tandis que Safari 4 et Chrome 2 le contiennent. Si nous avons un rembourrage de 2px en haut et en bas, ScrollHeight sera 4px plus grand dans le navigateur WebKit et la hauteur de la zone de texte augmentera infiniment. La soustraction du rembourrage cassera Firefox, donc la solution la plus simple consiste à appliquer le rembourrage vertical de 0px à nos éléments de zone de texte étendus.
  • ScrollHeight est bizarre dans IE et Opera. Il renvoie généralement la véritable hauteur du texte interne, cependant, la définition de la hauteur de la zone de texte à 0px renvoie une valeur de défilement incorrecte. Bien que le reniflement du navigateur soit terrible, je ne pense pas que nous ayons d'autres options dans ce cas. Nous devons nous assurer que IE et Opera ne définissent jamais la hauteur de la zone de texte à 0px.

Nous devons également considérer la barre de défilement. Par défaut, la plupart des navigateurs affichent uniquement les barres de défilement de zone de texte en cas de besoin. Cependant, si nous définissons le débordement sur "Auto", la barre de défilement apparaîtra lorsque nous ajoutons une nouvelle ligne, puis disparaîtrons lorsque nous changeons la hauteur de la zone de texte. La définition du débordement sur "caché" résoudra le problème de la barre de défilement clignotante, mais cela ne doit jamais être appliqué à des zones de texte non étendues ou à des zones de texte qui ont été étendues au-delà de leur hauteur maximale spécifiée.

Enfin, le redimensionnement des fenêtres du navigateur peut être un problème. La conception de sites Web fluides peut implémenter des zones de texte avec une largeur basée sur le pourcentage: le redimensionnement des fenêtres redimensionnera la boîte. Bien que nous puissions détecter le redimensionnement des fenêtres, l'événement fonctionne mal dans IE et appelle rapidement les gestionnaires. Nous pouvons résoudre ce problème, mais la redimensionnement de plusieurs zones de texte peut entraîner des sauts et confondre la conception des pages et confondre les utilisateurs. Ainsi, après le redimensionnement, nous allons ajuster la hauteur de la zone de texte après que les commutateurs utilisateur se concentrent sur la case.

Il y a beaucoup de contenu à absorber, et il y en a plus! Faites-vous une tasse de café et préparez-vous pour la deuxième partie ...

  • Partie 2: Initialisation de la zone de texte
  • Partie 3: Code du plugin JavaScript
  • comment développer le plug-in jQuery

How to Build an Auto-Expanding Textarea jQuery Plugin, Part 1

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Démystifier javascript: ce qu'il fait et pourquoi c'est important Démystifier javascript: ce qu'il fait et pourquoi c'est important Apr 09, 2025 am 12:07 AM

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Qui est payé plus de python ou de javascript? Qui est payé plus de python ou de javascript? Apr 04, 2025 am 12:09 AM

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido?
ou:
Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Apr 04, 2025 pm 05:36 PM

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

JavaScript est-il difficile à apprendre? JavaScript est-il difficile à apprendre? Apr 03, 2025 am 12:20 AM

Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.

L'évolution de JavaScript: tendances actuelles et perspectives d'avenir L'évolution de JavaScript: tendances actuelles et perspectives d'avenir Apr 10, 2025 am 09:33 AM

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Apr 04, 2025 pm 05:09 PM

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Apr 04, 2025 pm 02:06 PM

Explorez la mise en œuvre de la fonction de glisser et de réglage du panneau de type VScode dans le frontal. Dans le développement frontal, comment implémenter un VScode comme ...

See all articles