Contacts

Création de formulaires HTML. Formulaires HTML Quel style de page de connexion choisir

Un tutoriel sur la façon de créer un formulaire de connexion et d'inscription avec HTML5 et CSS3.

Dans ce tutoriel, nous allons créer deux formulaires HTML5 qui basculeront entre la connexion et l'inscription en utilisant la pseudo classe CSS3 :target . Nous allons le styliser en utilisant CSS3 et une police d'icônes. L'idée derrière cette démo est de montrer à l'utilisateur le formulaire de connexion et de fournir un lien pour « basculer » vers le formulaire d'inscription.

Notez que ceci est uniquement à des fins de démonstration, cela ne fonctionnera que dans un navigateur prenant en charge la pseudo-classe :target, et vous ne devez pas utiliser ce code sur un site Web en direct sans fournir une solution de secours solide.

Dans ce qui suit, nous passerons par la démo 1.

Le HTML

Dans le HTML, nous mettrons les deux formulaires en cachant le second avec CSS. Voici le code, j'expliquerai certaines des parties intéressantes plus tard.

Se connecter

S'inscrire

Nous avons ajouté ici quelques qualités HTML5 et utilisé certaines des nouvelles entrées. L'entrée tapez=mot de passe masque automatiquement ce que l'utilisateur tape et le remplace par des points (selon le navigateur). L'entrée tapez=email permet au navigateur de vérifier si ce que l'utilisateur a saisi a le format d'une adresse e-mail valide. Nous avons également utilisé le exiger=obligatoire attribut; les navigateurs qui prennent en charge cet attribut ne permettront pas à l'utilisateur de soumettre le formulaire tant que ce champ n'est pas rempli, aucun JavaScript n'est requis.
Le saisie semi-automatique = activé L'attribut préremplira les valeurs en fonction des entrées précédentes de l'utilisateur. Nous avons également utilisé de jolis espaces réservés pour les entrées qui afficheront une valeur directrice lorsque l'entrée n'est pas remplie.

Maintenant les deux parties délicates. Vous avez peut-être remarqué les deux liens en haut du formulaire. C'est une petite astuce qui permettra à notre formulaire de bien se comporter lorsque nous jouons avec des ancres, afin qu'il ne « saute » pas sur de longues pages lorsque nous cliquons sur le lien de commutation et déclenchons la pseudo-classe :target.

La deuxième petite astuce est liée à l’utilisation de la police des icônes. Nous utiliserons un attribut de données pour afficher les icônes. En définissant data-icon = "icon_character" avec le caractère correspondant dans le HTML, nous n'aurons besoin que d'un seul sélecteur d'attribut CSS pour styliser toutes les icônes. En savoir plus sur cette technique sur 24 façons : afficher des icônes avec des polices et des attributs de données.

Le CSS

Pour la clarté du code de ce tutoriel, j'omettrai tous les préfixes des fournisseurs, mais vous les retrouverez bien sûr dans les fichiers. Encore une fois, j'utilise des astuces CSS3 assez avancées qui pourraient ne pas fonctionner dans tous les navigateurs. Commençons.

Styliser les deux formulaires en utilisant CSS3

Tout d’abord, donnons à nos deux formulaires un style général pour le conteneur.

#subscribe, #login( position : absolue ; haut : 0px ; largeur : 88 % ; remplissage : 18px 6% 60px 6% ; marge : 0 0 35px 0 ; arrière-plan : rgb(247, 247, 247) ; bordure : 1px solide rgba(147, 184, 189,0.8); ombre de la boîte : 0pt 2px 5px rgba(105, 108, 109, 0.7), 0px 0px 8px 5px rgba(208, 223, 226, 0.4) encart ; rayon de bordure : 5px ; ) #login( z-index: 22; )

Nous avons ajouté une jolie ombre de boîte composée de deux ombres : une en médaillon pour créer la lueur bleue intérieure et une ombre extérieure. Nous expliquerons le z-index dans un instant.

Dans ce qui suit, nous styliserons l’en-tête avec un découpage d’arrière-plan :

/**** style général du texte ****/ #wrapper h1( taille de police : 48px ; couleur : rgb(6, 106, 117) ; remplissage : 2px 0 10px 0 ; famille de polices : "FranchiseRegular", Arial Narrow",Arial,sans-serif; font-weight: bold; text-align: center; padding-bottom: 30px; ) /** Pour le moment seul le webkit supporte le background-clip:text; */ #wrapper h1( arrière-plan : -webkit-repeating-linear-gradient(-45deg, rgb(18, 83, 93) , rgb(18, 83, 93) 20px, rgb(64, 111, 118) 20px, rgb (64, 111, 118) 40px, rgb(18, 83, 93) 40px); -webkit-text-fill-color: transparent; -webkit-background-clip: texte; ) #wrapper h1:after( content:" "; affichage: bloc; largeur: 100%; hauteur: 2px; marge supérieure: 10px; arrière-plan: dégradé linéaire (gauche, rgba (147 184 189,0) 0%, rgba (147 184 189,0.8) 20%, rgba (147 184 189) ,1) 53%, rgba(147 184 189,0,8) 79%, rgba(147 184 189,0) 100%); )

Notez qu'à l'heure actuelle, seuls les navigateurs Webkit prennent en charge clip d'arrière-plan : texte, nous allons donc créer ici un arrière-plan dépouillé uniquement pour le webkit et le couper au texte pour ajouter les rayures au titre H1. Depuis le clip d'arrière-plan : texte La propriété ne fonctionne actuellement que dans les navigateurs Webkit, j'ai décidé d'utiliser uniquement le préfixe webkit. C'est la raison pour laquelle j'ai divisé la déclaration CSS en deux parties et j'utilise uniquement un dégradé préfixé par un kit Web. Utiliser uniquement le préfixe –webkit- est une mauvaise pratique, c'est uniquement à des fins de démonstration, et vous ne devriez jamais faire cela sur un vrai site Web ! C'est aussi là que le -webkit-text-fill-color : transparent est pratique : cela nous permet d'avoir uniquement un fond transparent sur les navigateurs du webkit, tous les autres l'ignoreront et nous donneront la couleur de repli du texte fournie.

Nous avons également créé une ligne de fondu sous le titre à l’aide de la pseudo-classe :after. Nous utilisons un dégradé de hauteur de 2 pixels et estompons l'arrière-plan à une opacité de 0 aux deux extrémités.

Maintenant, stylisons nos entrées et donnons-leur un aspect plus joli.

/**** style d'entrée avancé ****/ /* espace réservé */ ::-webkit-input-placeholder ( couleur : rgb(190, 188, 188); style de police : italique ; ) input:-moz- espace réservé, textarea:-moz-placeholder( couleur : rgb(190, 188, 188); style de police : italique ; ) entrée ( contour : aucun ; )

Nous stylisons d’abord les entrées et supprimons le contour. Mais soyez prudent ici ; le plan aide l'utilisateur à savoir quelle entrée est ciblée, donc si vous la supprimez, vous devez fournir des états : active et : focus pour les entrées.

/* toutes les entrées sauf la soumission et la case à cocher */ #wrapper input:not())( width: 92%; margin-top: 4px; padding: 10px 5px 10px 32px; border: 1px solid rgb(178, 178, 178) ; dimensionnement de la boîte : boîte de contenu ; rayon de bordure : 3 px ; ombre de la boîte : 0px 1px 4px 0px rgba(168, 168, 168, 0.6) encart ; transition : tous les 0,2 s linéaires ; ) #wrapper input:not() : actif, #wrapper input:not():focus( border: 1px solid rgba(91, 90, 90, 0.7); background: rgba(238, 236, 240, 0.2); box-shadow : 0px 1px 4px 0px rgba ( 168, 168, 168, 0,9) encart ; )

Ici, nous avons utilisé la pseudo-classe :not, pour styliser toutes les entrées, à l'exception de la case à cocher. J'ai fourni un état:focus et:active, puisque j'ai décidé de supprimer le contour.

Et maintenant la partie amusante : la police des icônes. Comme nous ne pouvons pas utiliser les pseudo-classes :before et :after sur les entrées, nous allons devoir tricher un peu : nous allons ajouter l’icône à l’étiquette, puis la placer dans l’entrée. J'utilise la bibliothèque fontomas qui rassemble de jolies icônes. Vous pouvez les réorganiser pour définir l'icône sur une lettre spécifique. Se souvenir du icône de données attribut? C'est là que tu dois mettre la lettre. j'ai utilisé icône de données = 'u' pour l'utilisateur, « e » pour l'e-mail, « p » pour le mot de passe. Une fois les lettres choisies, j'ai téléchargé la police et utilisé le générateur de polices fontsquirrel pour la transformer dans un format compatible @font-face.

@font-face ( font-family: "FontomasCustomRegular"; src: url("fonts/fontomas-webfont.eot"); src: url("fonts/fontomas-webfont.eot?#iefix") format("embedded- opentype"), url("fonts/fontomas-webfont.woff") format("woff"), url("fonts/fontomas-webfont.ttf") format("truetype"), url("fonts/fontomas-webfont .svg#FontomasCustomRegular") format("svg"); font-weight: normal; font-style: normal; ) /** le tour magique des icônes ! **/ :after ( contenu : attr(data-icon); font-family : "FontomasCustomRegular" ; couleur : rgb(106, 159, 171) ; position : absolue ; gauche : 10px ; haut : 35px ; largeur : 30px ; )

Ouais, c'est tout, vous n'avez pas besoin d'avoir une classe pour chaque icône. Nous avons utilisé contenu : attr (icône de données) pour récupérer la lettre depuis l'attribut data-icon, il suffit donc de déclarer la police, de choisir une jolie couleur et de la positionner.

Stylisons maintenant le bouton d'envoi pour les deux formulaires.

/*style des deux boutons de soumission */ #wrapper p.button input( width: 30%; curseur: pointeur; arrière-plan: rgb(61, 157, 179); padding: 8px 5px; font-family: "BebasNeueRegular","Arial Narrow", Arial, sans-serif ; couleur : #fff ; taille de police : 24 px ; bordure : 1px solid rgb(28, 108, 122); marge inférieure : 10px ; ombre du texte : 0 1px 1px rgba(0, 0, 0, 0,5); rayon de bordure : 3 px ; ombre de la boîte : 0px 1px 6px 4px rgba(0, 0, 0, 0.07) encart, 0px 0px 0px 3px rgb(254, 254, 254), 0px 5px 3px 3px rgb(210, 210, 210); transition : tous les 0,2 s linéaires ; ) #wrapper p.button input:hover( arrière-plan : rgb(74, 179, 198); ) #wrapper p.button input:active, #wrapper p .button input:focus( arrière-plan : rgb(40, 137, 154); position : relative; haut : 1px; bordure : 1px solid rgb(12, 76, 87); box-shadow : 0px 1px 6px 4px rgba(0, 0, 0, 0.2) encart; ) p.login.button, p.signin.button( text-align: right; margin: 5px 0; )

L'astuce ici est d'utiliser l'ombre de la boîte afin de créer des bordures supplémentaires. Vous ne pouvez utiliser qu’une seule bordure, mais autant d’ombres de boîte que vous le souhaitez. Nous utiliserons la valeur de longueur pour créer une « fausse » deuxième bordure blanche, de 3 pixels de large, sans flou.

Ensuite, nous styliserons la case à cocher, rien de bien spécial ici :

/* stylisant la case à cocher "garde-moi connecté"*/ .keeplogin( margin-top: -5px; ) .keeplogin input, .keeplogin label( display: inline-block; font-size: 12px; font-style: italic; ) .keeplogin input#loginkeeping( margin-right: 5px; ) .keeplogin label( width: 80%; )

Nous styliserons le bas du formulaire en utilisant des dégradés linéaires répétitifs pour créer un arrière-plan rayé.

P.change_link( position : absolue ; couleur : rgb(127, 124, 124) ; gauche : 0px ; hauteur : 20px ; largeur : 440px ; remplissage : 17px 30px 20px 30px ; taille de police : 16px ; alignement du texte : droite ; bordure supérieure : 1 px RVB solide (219, 229, 232 ); rayon de bordure : 0 0 5px 5px ; arrière-plan : RVB (225, 234, 235); arrière-plan : dégradé linéaire répétitif (-45deg, RVB (247, 247, 247) , rgb(247, 247, 247) 15px, rgb(225, 234, 235) 15px, rgb(225, 234, 235) 30px, rgb(247, 247, 247) 30px); ) #wrapper p .change_link a ( affichage : bloc en ligne ; poids de la police : gras ; arrière-plan : rgb(247, 248, 241) ; remplissage : 2px 6px ; couleur : rgb(29, 162, 193) ; marge gauche : 10px ; texte -décoration : aucune ; rayon de bordure : 4 px ; bordure : 1 px solide rgb(203, 213, 214) ; transition : tous les 0,4 s linéaires ; ) #wrapper p.change_link a:hover ( couleur : rgb(57, 191, 215 ); arrière-plan : rgb(247, 247, 247); bordure : 1px solid rgb(74, 179, 198); ) #wrapper p.change_link a:active( position: relative; top: 1px; )

Vous remarquerez maintenant que nous avons deux jolis formulaires, mais nous voulons vraiment qu’un seul s’affiche à la fois. Alors c'est l'heure de quelques animations !!

Création de l'animation de commutation

La première chose à faire est de masquer le deuxième formulaire en définissant l'opacité à 0 :

#register( z-index : 21 ; opacité : 0 ; )

Vous vous souvenez que notre formulaire de connexion avait un z-index de 22 ? Nous donnerons au deuxième formulaire un z-index de 21, pour le mettre « sous » le formulaire de connexion.

Et maintenant la très bonne partie : changer de formulaire en utilisant la pseudo-classe :target. Ce qu'il faut vraiment comprendre à propos de :target, c'est que nous allons utiliser des ancres pour effectuer la transition. Le comportement normal d'un lien d'ancrage est de sauter vers la cible dans la page. Mais nous ne voulons pas aller n’importe où, nous voulons seulement changer de forme. Et voici notre astuce en utilisant les deux liens en haut de la page. Au lieu de créer un lien direct vers le deuxième formulaire, et de risquer d'obtenir un effet « saut », nous plaçons en fait les deux liens en haut de la page et leur donnons affichage : aucun. Cela évitera tout saut de page. À crédit, à César : j’ai trouvé cette astuce sur CSS3 create (en français).

#toregister:target ~ #wrapper #register, #tologin:target ~ #wrapper #login( z-index : 22 ; nom d'animation : fadeInLeft ; délai d'animation : .1s ; )

Voici donc ce qui se passe : lorsque l'on clique sur le Rejoignez-nous bouton, on déclenche le #toregister. Nous faisons ensuite l'animation, en utilisant le sélecteur frère ~ pour trouver notre élément #register. Nous utilisons une animation appelée fondu à gauche. Puisque nous « masquons » le formulaire en utilisant une opacité nulle, nous utiliserons une animation qui apparaît en fondu pour le faire apparaître. Nous avons également modifié le z-index pour qu'il apparaisse au-dessus de l'autre formulaire.
La même chose se produit pour l'autre forme.

Et voici le code de l'animation. Nous utilisons le framework d'animation CSS3 de Dan Eden et l'avons adapté pour ce tutoriel.

Animer ( durée d'animation : 0,5 s ; fonction de synchronisation d'animation : facilité ; mode de remplissage d'animation : les deux ; ) @keyframes fadeInLeft ( 0 % (opacité : 0 ; transformation : traduireX(-20px); ) 100 % (opacité : 1; transformation : traduireX(0); ) )

Le formulaire qui « disparaît » aura une autre animation qui le fera disparaître vers la gauche :

#toregister:target ~ #wrapper #login, #tologin:target ~ #wrapper #register( animation-name: fadeOutLeftBig; ) @keyframes fadeOutLeft ( 0% ( opacité : 1; transform: translateX(0); ) 100% ( opacité : 0; transformation : traduireX(-20px); ) )

Vous pouvez désormais utiliser d'autres animations du fichier animate.css de Dan Eden : ajustez simplement votre classe .animate et remplacez les noms des animations. Vous trouverez également quelques animations personnalisées à la fin du fichier animate-custom.css.

Eh bien, c'est tout, les amis. J'espère que vous avez apprécié le tutoriel !

Veuillez noter que dans certains navigateurs clip d'arrière-plan : texte n’est pas pris en charge. Dans Internet Explorer 9, les transitions et les animations ne fonctionnent pas, il n'y aura donc pas de changement de forme sophistiqué. Dans Internet Explorer 8 et versions antérieures, la pseudo-classe :target n'est pas prise en charge, elle ne fonctionnera donc pas du tout (vous verrez simplement le formulaire de connexion).

Le formulaire lui-même est généralement destiné à recevoir des informations de l'utilisateur pour les envoyer ensuite au serveur, où les données du formulaire sont reçues par le programme de gestion. Un tel programme peut être écrit dans n'importe quel langage de programmation côté serveur comme PHP, Perl, etc. L'adresse du programme est indiquée dans l'attribut action de la balise

, comme le montre l'exemple 1.

Exemple 1 : Soumission des données du formulaire

HTML5 IE Cr Op Sa FX

Données de formulaire



Dans cet exemple, les données du formulaire indiquées par l'attribut name (login et mot de passe) seront transmises au fichier /example/handler.php. Si l'attribut action n'est pas spécifié, alors le transfert s'effectue vers l'adresse de la page en cours.

Le transfert vers le serveur s'effectue selon deux méthodes différentes : GET et POST, pour définir la méthode dans la balise

L'attribut méthode est utilisé et ses valeurs sont les mots-clés get et post. Si l'attribut méthode n'est pas spécifié, alors par défaut les données sont envoyées au serveur à l'aide de la méthode GET. Dans le tableau La figure 1 montre les différences entre ces méthodes.

La méthode utilisée peut être facilement déterminée par la barre d'adresse du navigateur. Si un point d'interrogation y apparaît et que l'adresse ressemble à ceci, il s'agit bien d'un GET.

http://www.google.ru/search?q=%D1%81%D0%B8%D1%81%D1%8C%D0%BA%D0%B8&ie=utf-8

Une combinaison unique de paramètres dans la barre d'adresse identifie de manière unique une page, de sorte que les pages avec les adresses ?q=node/add et ?q=node sont considérées comme différentes. Cette fonctionnalité est utilisée par les systèmes de gestion de contenu (CMS, Content management system) pour créer de nombreuses pages de sites Web. En réalité, on utilise un seul fichier qui reçoit une requête GET et, en fonction de celle-ci, génère le contenu du document.

Vous trouverez ci-dessous les applications typiques de ces méthodes sur les sites.

OBTENIR

Transférer de petites données texte vers le serveur ; Recherche du site.

Les moteurs de recherche et les formulaires de recherche de sites sont toujours envoyés via la méthode GET, cela vous permet de partager les résultats de recherche avec des amis, d'envoyer un lien par mail ou de le publier sur un forum.

POSTE

Transférer des fichiers (photos, archives, programmes, etc.) ; envoyer des commentaires ; ajout et édition de messages sur le forum, blog.

Par défaut, le formulaire est traité dans l'onglet actuel du navigateur ; cependant, lors de la soumission du formulaire, vous pouvez modifier ce paramètre et ouvrir le gestionnaire de formulaire dans un nouvel onglet ou un nouvel cadre. Ce comportement est spécifié via le « nom du contexte », qui est la valeur de l'attribut cible de la balise . Les valeurs populaires sont _blank pour ouvrir le formulaire dans une nouvelle fenêtre ou un nouvel onglet, et le nom du cadre, qui est spécifié par l'attribut name de la balise



Dans cet exemple, lorsque vous cliquez sur le bouton Soumettre, le résultat de la soumission du formulaire s'ouvre dans un cadre appelé zone .

Les éléments de formulaire sont traditionnellement placés à l'intérieur d'une balise

, déterminant ainsi les données qui seront transmises au serveur. En même temps, HTML5 a la capacité de séparer un formulaire de ses éléments. Ceci est fait pour des raisons de commodité et de polyvalence, de sorte qu'une mise en page complexe peut contenir plusieurs formulaires qui ne doivent pas se croiser ou, par exemple, certains éléments sont affichés à l'aide de scripts à un endroit de la page et le formulaire lui-même est situé à un autre. . La connexion entre le formulaire et ses éléments s'effectue dans ce cas via l'identifiant du formulaire, et l'attribut du formulaire avec une valeur égale à cet identifiant doit être ajouté aux éléments (exemple 3).

Exemple 3 : Lier un formulaire à des champs

HTML5 IE Cr Op Sa FX

Formulaire



Dans cet exemple, la balise

est identifié de manière unique via l'identifiant d'authentification, et form="auth" est ajouté aux champs qui doivent être soumis via le formulaire. Dans ce cas, le comportement des éléments ne change pas : lorsque vous cliquez sur le bouton, le login et le mot de passe sont envoyés au gestionnaire handler.php.

Bien que les paramètres de transfert de formulaire soient traditionnellement spécifiés dans la balise , ils peuvent également être transférés vers les boutons de soumission du formulaire (

Avez-vous aimé l'article? Partagez-le