Je cherche constamment des moyens d'améliorer et d'affiner la convivialité de mes applications Web. En particulier, j'essaie toujours de trouver des moyens d'améliorer mes formulaires, car, avouons-le: si vous créez des applications Web, vous allez créer des formulaires. Très probablement, vous allez construire beaucoup de formulaires.
Quiconque a observé un utilisateur moyen essayant de remplir un formulaire ou une série de formulaires sait que l'expérience est souvent frustrante. Prenez des mesures supplémentaires pour améliorer la convivialité de vos formulaires - même de manière mineure - »- et vous pouvez vraiment stimuler la convivialité de votre application dans l'ensemble.
Une technique que vous pouvez utiliser pour améliorer la convivialité de vos formulaires est de préserver le défilement de la page après les post-backs. Vous aimerez peut-être utiliser cette fonctionnalité dans une page de recherche, par exemple, sur laquelle l'utilisateur peut trier les résultats par colonne. Si vous avez en haut de la page A depuis qui accepte les paramètres de recherche et que vous affichez les résultats ci-dessous, il peut être très ennuyeux pour les utilisateurs de faire défiler la page après les paramètres des résultats chaque fois qu'ils souhaitent trier leurs résultats par une colonne donnée. Heureusement, nous pouvons faire quelque chose à ce sujet.
Dans ce didacticiel, je vais vous montrer avec quelle facilité de maintien de la position de défilement d'une page lorsque une page de formulaire remet en place à elle-même. Bien que j'aie codé l'exemple ici dans Coldfusion, la technique peut être facilement portée vers d'autres langues.
Il n'y a vraiment que deux choses que vous devez faire pour faire fonctionner cette technique. Vous devrez écrire du javascript pour saisir les coordonnées actuelles X et Y de votre page et les mettre dans le formulaire afin qu'elles soient soumises lorsque vous publiez à la page actuelle. Ensuite, vous devrez prendre ces coordonnées X et Y de défilement et, via une combinaison de scripts côté serveur et côté client, définissez les coordonnées de défilement de la page une fois qu'elle recharge. Morceau de gâteau!
J'utilise un formulaire à nu ici afin que vous puissiez vraiment vous concentrer clairement sur la mécanique du fonctionnement du processus, plutôt que la création d'une page de recherche plus compliquée du type que je mentionne ci-dessus. Une fois que vous savez comment faire fonctionner les choses, vous pouvez facilement adapter cet exemple à vos propres besoins et être aussi intelligent que vous le souhaitez.
<cfparam name="FORM.name" default="Testing"> <br> <br> <html> <br> <head> <br> <title>Test</title> <br> </head> <br> <body> <br> <br> <form name="Form1" <br> method="POST" <br> action="<cfoutput>#CGI.SCRIPT_NAME#</cfoutput>"> <br> <br> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <br> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <br> <br> <hr width="2000"> <br> <br> <nobr> <br> Name: <input type="text" name="name" value="<cfoutput>#FORM.name#</cfoutput>"> <br> <input type="submit" value="Submit"></nobr> <br> <br> <hr width="2000"> <br> <br> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <br> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <br> <br> </form> <br> <br> </body> <br> </html>
Cette page de formulaire ne fait rien de spécial pour le moment. Il repose simplement vers lui-même, passant le paramètre de nom. J'ai codé les paragraphes et les nombres afin que nous ayons du contenu défilent sur la page, et que nous ayons un guide visuel pour aider à juger jusqu'où la page s'est déroulée verticalement (notez que ce script préservera le défilement vertical et horizontal, cependant).
La première étape consiste à ajouter du javascript pour obtenir les valeurs X et Y de défilement et les mettre dans le formulaire. Pour ce faire, nous devrons ajouter deux entrées cachées à notre formulaire ainsi que quelques lignes de JavaScript qui saisiront les valeurs de défilement actuelles lorsque le formulaire est soumis et les transmettra aux entrées cachées. La fonction SaveScrollCoOrdineats () examinera la prise en charge du navigateur pour le document. tout et utiliseront les références correctes pour saisir les valeurs de défilement et mettre à jour les entrées de formulaire en conséquence. Nous utiliserons le gestionnaire d'événements onSubmit () sous notre forme pour l'appeler dans cet exemple.
J'ai codé les champs cachés qui stockent les valeurs de défilement en tant que champs de texte dans cet exemple, donc si vous avez des yeux rapides, vous pouvez regarder comment les valeurs changent avant la soumission du formulaire.
<cfparam name="FORM.name" default="Testing"> <br> <br> <html> <br> <head> <br> <title>Test</title> <br> </head> <br> <body> <br> <br> <form name="Form1" <br> method="POST" <br> action="<cfoutput>#CGI.SCRIPT_NAME#</cfoutput>"> <br> <br> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <br> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <br> <br> <hr width="2000"> <br> <br> <nobr> <br> Name: <input type="text" name="name" value="<cfoutput>#FORM.name#</cfoutput>"> <br> <input type="submit" value="Submit"></nobr> <br> <br> <hr width="2000"> <br> <br> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <br> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <br> <br> </form> <br> <br> </body> <br> </html>
La deuxième étape consiste à prendre les valeurs qui sont passées avec la forme et à faire quelque chose avec elles. Pour cela, nous devrons ajouter quelques lignes de JavaScript avec juste une touche de Coldfusion. Tout d'abord, nous insérerons deux balises CFPARAM supplémentaires en haut de la page afin que nous ayons des valeurs de défilement par défaut avec lesquelles travailler sur chaque page de page. Ensuite, nous définirons la fonction ScrollToCoOrdineats () pour définir le défilement de la page et l'appeler lorsque la page se charge à l'aide du gestionnaire d'événements Onload () dans la balise
.<cfparam name="FORM.name" default="Testing"> <br> <br> <html> <br> <head> <br> <title>Test</title> <br> <script language=javascript> <br> function saveScrollCoordinates() { <br> document.Form1.scrollx.value = (document.all)?document.body.scrollLeft:window.pageXOffset; <br> document.Form1.scrolly.value = (document.all)?document.body.scrollTop:window.pageYOffset; <br> } <br> </script> <br> </head> <br> <body> <br> <br> <form name="Form1" <br> method="POST" <br> onSubmit="saveScrollCoordinates()" <br> action="<cfoutput>#CGI.SCRIPT_NAME#</cfoutput>"> <br> <br> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <br> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <br> <br> <hr width="2000"> <br> <br> <nobr> <br> Name: <input type="text" name="name" value="<cfoutput>#FORM.name#</cfoutput>"> <br> <input type="text" name="scrollx" value="0"> <br> <input type="text" name="scrolly" value="0"> <br> <input type="submit" value="Submit"></nobr> <br> <br> <hr width="2000"> <br> <br> <p>11</p> <p>12</p> <p>13</p> <p>14</p> <p>15</p> <br> <p>16</p> <p>17</p> <p>18</p> <p>19</p> <p>20</p> <br> <br> </form> <br> <br> </body> <br> </html>
Voici la ventilation play-by-play qui décrit ce qui se passe lorsque l'utilisateur clique sur le bouton pour soumettre le formulaire:
Testez le formulaire et vous remarquerez que peu importe où vous faites défiler, lorsque vous soumettez la page, vous vous retrouvez au même endroit où vous avez commencé à la fois verticalement et horizontalement. Pour mieux tester le parchemin horizontal, redimensionnez votre navigateur afin qu'il soit très étroit, puis soumettez le formulaire. Vos rouleaux X et Y sont conservés automatiquement un autre moyen de réaliser cela utilise des ancres HREF, mais cela n'est pas aussi précis ou lisse.
Qu'en est-il de l'exemple que j'ai donné ci-dessus, où nous avions une page de recherche contenant un formulaire d'entrée et des résultats qui pourraient être triés par colonne? Dans ce cas, vous êtes susceptible de soumettre le formulaire et d'exécuter un peu de SQL avec des valeurs légèrement différentes chaque fois que l'utilisateur choisit de cliquer sur une colonne en tête pour trier. Si vous mettez à jour des entrées masquées avec la nouvelle colonne de tri et la direction de tri, il devrait être une tâche facile d'ajouter cette fonctionnalité à votre page. Vous n'avez qu'à insérer les entrées cachées supplémentaires dans votre formulaire et à incorporer le JavaScript présenté ici dans votre propre JavaScript. Vos liens de tri peuvent utiliser le gestionnaire d'événements onClick () pour mettre à jour les valeurs de défilement cachées et soumettre à nouveau votre formulaire.
Ce que je vous ai montré est juste un exemple simple de cette technique. Le code ici a été testé à l'aide d'Internet Explorer 6 et de Mozilla Firefox pour Windows et Safari sur un Mac. Utilisez l'idée derrière cette technique comme point de départ. Appliquez votre propre créativité et vos compétences pour ajouter une sensation plus polie et intuitive aux formulaires que vous utilisez dans vos applications.
La préservation de la position de défilement d'une page à l'aide de CSS peut être obtenue en utilisant la propriété «Scroll-Behavior». Cette propriété spécifie si le défilement doit être lisse ou sauté. Pour rendre la position de défilement lisse, vous pouvez utiliser «Scroll-Behavior: Smooth». Cela rendra la transition d'une partie de la page à une autre plus fluide, préservant ainsi la position de défilement.
JavaScript joue un rôle crucial dans la préservation de la position de défilement d'une page. Il vous permet d'enregistrer la position de défilement dans une variable, puis de l'utiliser plus tard pour restaurer la position. Ceci est particulièrement utile lorsque vous souhaitez maintenir la position de défilement après un rafraîchissement de page ou lorsque vous retournez vers une page.
La position de la barre de défilement peut être modifiée à l'aide de CSS en utilisant la propriété «Direction». Cette propriété détermine la direction du texte et où la barre de défilement doit être placée. Par exemple, si vous voulez que la barre de défilement soit à gauche, vous pouvez utiliser «Direction: RTL», et pour la droite, vous pouvez utiliser «Direction: LTR».
indiquant que la position de défilement sur une page avec CSS peut être réalisée en utilisant la propriété «position». Cette propriété vous permet de positionner un élément par rapport à la fenêtre, qui peut être utilisée pour indiquer la position de défilement. Par exemple, vous pouvez utiliser «Position: Sticky» pour faire respecter un élément à la fenêtre, indiquant ainsi la position de défilement.
Définition de la position de défilement par défaut à l'aide de CSS peut être réalisée en utilisant les propriétés «scroll-Behavior» et «Scroll-Snap-Type». These properties allow you to control the scroll position and make it snap to certain points.
The ‘scroll-behavior: smooth’ property in CSS makes the scrolling smooth, while the ‘scroll-behavior: auto’ property makes the scrolling jump to the target emplacement. La propriété «lisse» est utile lorsque vous souhaitez faire la transition d'une partie de la page à une autre plus fluide, tandis que la propriété «Auto» est utile lorsque vous souhaitez sauter à un emplacement spécifique.
Vous pouvez utiliser la propriété «Fenêtre» dans Javascript pour sauver la position Scroll dans une variable. Ensuite, vous pouvez utiliser la méthode «Window.scrollto» pour restaurer la position de défilement. Ceci est particulièrement utile lorsque vous souhaitez maintenir la position de défilement après un rafraîchissement de page ou lorsque vous retournez vers une page.
L'alignement instantané de défilement peut être contrôlé à l'aide de la propriété "Scroll-Snap-Align" dans CSS. Cette propriété spécifie où un élément doit s'aligner lorsqu'un instantané de défilement se produit. Par exemple, vous pouvez utiliser «Scroll-Snap-Align: Start» pour aligner l'élément au début du conteneur.
Faire un élément à la Viewport peut être réalisé en utilisant la propriété «Position: Sticky» dans CSS. Cette propriété positionne un élément basé sur la position de défilement de l'utilisateur. Par exemple, vous pouvez utiliser la position «Sticky; En haut: 0 ’pour faire en sorte qu'un élément colle en haut de la fenêtre.
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!