Contactos

Creación de formularios HTML. Formularios HTML Qué estilo de página de inicio de sesión elegir

Un tutorial sobre cómo crear un formulario de inicio de sesión y registro con HTML5 y CSS3.

En este tutorial vamos a crear dos formularios HTML5 que alternarán entre inicio de sesión y registro usando la pseudoclase CSS3 :target. Le aplicaremos estilo usando CSS3 y una fuente de ícono. La idea detrás de esta demostración es mostrar al usuario el formulario de inicio de sesión y proporcionar un enlace para "cambiar" al formulario de registro.

Tenga en cuenta que esto es solo para fines de demostración, solo funcionará en un navegador que admita la pseudoclase:target y no debe usar este código en un sitio web activo sin proporcionar un respaldo sólido.

A continuación, veremos la Demostración 1.

El HTML

En el HTML pondremos ambos formularios, ocultando el segundo con CSS. Aquí está el código, explicaré algunas de las partes interesantes más adelante.

Acceso

Inscribirse

Agregamos algunas bondades de HTML5 aquí y utilizamos algunas de las nuevas entradas. la entrada tipo=contraseña oculta automáticamente lo que el usuario está escribiendo y lo reemplaza con puntos (según el navegador). la entrada tipo=correo electrónico permite al navegador verificar si lo que el usuario ingresó tiene el formato de una dirección de correo electrónico válida. También hemos utilizado el requerir = requerido atributo; Los navegadores que admiten este atributo no permitirán que el usuario envíe el formulario hasta que se complete este campo; no se requiere JavaScript.
El autocompletar = activado El atributo completará previamente los valores según la entrada anterior del usuario. También utilizamos algunos marcadores de posición agradables para las entradas que mostrarán algún valor guía cuando la entrada no esté completa.

Ahora las dos partes difíciles. Es posible que hayas notado los dos enlaces en la parte superior del formulario. Este es un pequeño truco que hará que nuestro formulario se comporte bien al jugar con anclajes, de modo que no "salte" en páginas largas cuando hagamos clic en el enlace de cambio y active la pseudoclase:target.

El segundo pequeño truco está relacionado con el uso de la fuente de iconos. Usaremos un atributo de datos para mostrar los íconos. Configurando icono-datos=”icon_character” con el carácter correspondiente en el HTML, solo necesitaremos un selector de atributos CSS para diseñar todos los íconos. Lea más sobre esta técnica en 24 formas: mostrar íconos con fuentes y atributos de datos.

El CSS

Para mayor claridad del código en este tutorial, omitiré todos los prefijos de proveedores, pero, por supuesto, los encontrará en los archivos. Una vez más, estoy usando algunos trucos de CSS3 bastante avanzados que quizás no funcionen en todos los navegadores. Empecemos.

Diseñar ambos formularios usando CSS3

Primero, demos a nuestras dos formas un estilo general para el contenedor.

#subscribe, #login( posición: absoluta; arriba: 0px; ancho: 88%; relleno: 18px 6% 60px 6%; margen: 0 0 35px 0; fondo: rgb(247, 247, 247); borde: 1px sólido rgba(147, 184, 189,0.8); sombra de cuadro: 0pt 2px 5px rgba(105, 108, 109, 0.7), 0px 0px 8px 5px rgba(208, 223, 226, 0.4) inserto; radio de borde: 5px ; ) #login( índice z: 22; )

Hemos agregado una bonita sombra de cuadro que está hecha de dos sombras: una insertada para crear el brillo azul interior y una sombra exterior. Explicaremos el índice z en un momento.

A continuación aplicaremos estilo al encabezado con algún recorte de fondo:

/**** estilo de texto general ****/ #wrapper h1( tamaño de fuente: 48px; color: rgb(6, 106, 117); relleno: 2px 0 10px 0; familia de fuentes: "FranchiseRegular"," Arial Narrow",Arial,sans-serif; font-weight: negrita; text-align: center; padding-bottom: 30px; ) /** Por el momento solo webkit admite background-clip:text; */ #wrapper h1( fondo: -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: transparente; -webkit-background-clip: texto; ) #wrapper h1:after( contenido:" "; pantalla:bloque; ancho:100%; alto:2px; margen superior:10px; fondo: gradiente lineal(izquierda, 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%); )

Tenga en cuenta que en este momento sólo los navegadores webkit admiten clip de fondo: texto, por lo que aquí crearemos un fondo despojado solo para webkit y lo recortaremos al texto para agregar las rayas al título H1. desde el clip de fondo: texto Actualmente, la propiedad solo funciona en navegadores Webkit, decidí usar solo el prefijo webkit. Esa es la razón por la que dividí la declaración CSS en dos partes y utilicé solo un gradiente con el prefijo webkit. Usar únicamente el prefijo –webkit- es una mala práctica, es solo para fines de demostración y nunca debes hacer esto en un sitio web real. Ahí es también donde el -webkit-text-fill-color: transparente resulta útil: nos permite tener solo un fondo transparente en los navegadores webkit, todos los demás lo ignorarán y nos darán el color de texto alternativo proporcionado.

También creamos una línea difuminada debajo del título con la ayuda de la pseudoclase:after. Usamos un degradado de altura de 2px y desvanecemos el fondo a 0 opacidad en ambos extremos.

Ahora diseñemos nuestras entradas y démosles una apariencia más agradable.

/**** estilo de entrada avanzado ****/ /* marcador de posición */ ::-webkit-input-placeholder ( color: rgb(190, 188, 188); estilo de fuente: cursiva; ) entrada:-moz- marcador de posición, área de texto:-moz-placeholder( color: rgb(190, 188, 188); estilo de fuente: cursiva; ) entrada ( contorno: ninguno; )

Primero aplicamos estilo a las entradas y eliminamos el contorno. Pero ten cuidado aquí; el esquema ayuda al usuario a saber qué entrada está enfocada, por lo que si la elimina, debe proporcionar algunos estados: activo y: enfoque para las entradas.

/* toda la entrada excepto enviar y casilla de verificación */ #wrapper input:not())( ancho: 92%; margen superior: 4px; relleno: 10px 5px 10px 32px; borde: 1px solid rgb(178, 178, 178) ; tamaño del cuadro: cuadro de contenido; radio del borde: 3px; sombra del cuadro: 0px 1px 4px 0px rgba(168, 168, 168, 0.6) inserto; transición: todos los 0.2s lineales; ) #wrapper input:not() : activo, #wrapper entrada:not():focus( borde: 1px solid rgba(91, 90, 90, 0.7); fondo: rgba(238, 236, 240, 0.2); box-shadow: 0px 1px 4px 0px rgba ( 168, 168, 168, 0,9) recuadro; )

Aquí usamos la pseudoclase:not, para diseñar todas las entradas, excepto la casilla de verificación. Proporcioné un estado:focus y:active, ya que decidí eliminar el esquema.

Y ahora la parte divertida: la fuente del icono. Como no podemos usar pseudoclases:antes y:después en las entradas, tendremos que hacer un poco de trampa: agregaremos el ícono a la etiqueta y luego lo colocaremos en la entrada. Estoy usando la biblioteca fontomas que reúne algunos íconos bonitos. Puede reorganizarlos para configurar el ícono en una letra específica. Recuerda el icono de datos¿atributo? Es donde debes poner la carta. solía icono de datos = 'u' para usuario, 'e' para correo electrónico, 'p' para contraseña. Una vez que elegí las letras, descargué la fuente y usé el generador de fuentes fontsquirrel para transformarla en un formato compatible con @font-face.

@font-face ( font-family: "FontomasCustomRegular"; src: url("fonts/fontomas-webfont.eot"); src: url("fonts/fontomas-webfont.eot?#iefix") formato("embedded- opentype"), url("fonts/fontomas-webfont.woff") formato("woff"), url("fonts/fontomas-webfont.ttf") formato("truetype"), url("fonts/fontomas-webfont .svg#FontomasCustomRegular") format("svg"); peso de fuente: normal; estilo de fuente: normal; ) /** ¡el truco mágico del icono! **/ :después ( contenido: attr(icono de datos); familia de fuentes: "FontomasCustomRegular"; color: rgb(106, 159, 171); posición: absoluta; izquierda: 10px; arriba: 35px; ancho: 30px; )

Sí, eso es todo amigos, no es necesario tener una clase para cada ícono. Nosotros usamos contenido: attr(icono de datos) para recuperar la letra del atributo data-icon, así que solo tenemos que declarar la fuente, elegir un color bonito y posicionarla.

Ahora diseñemos el botón de enviar para ambos formularios.

/*diseño de ambos botones de envío */ #wrapper p.button input( ancho: 30%; cursor: puntero; fondo: rgb(61, 157, 179); relleno: 8px 5px; font-family: "BebasNeueRegular","Arial Estrecho",Arial,sans-serif; color: #fff; tamaño de fuente: 24px; borde: 1px rgb sólido(28, 108, 122); margen inferior: 10px; sombra de texto: 0 1px 1px rgba(0, 0, 0, 0.5); radio de borde: 3px; sombra de cuadro: 0px 1px 6px 4px rgba(0, 0, 0, 0.07) inserto, 0px 0px 0px 3px rgb(254, 254, 254), 0px 5px 3px 3px rgb(210, 210, 210); transición: todos 0.2s lineales; ) #wrapper p.button entrada:hover( fondo: rgb(74, 179, 198); ) #wrapper p.button entrada:activo, #wrapper p .entrada del botón: enfoque (fondo: rgb (40, 137, 154); posición: relativa; arriba: 1 px; borde: 1 px rgb sólido (12, 76, 87); sombra de cuadro: 0 px 1 px 6 px 4 px rgba (0, 0, 0, 0.2) inserto; ) p.login.button, p.signin.button( text-align: right; margin: 5px 0; )

El truco aquí es utilizar el cuadro de sombra para crear algunos bordes adicionales. Sólo puedes usar un borde, pero tantas sombras de cuadro como quieras. Usaremos el valor de longitud para crear un segundo borde blanco "falso", de 3 píxeles de ancho, sin desenfoque.

Luego le daremos estilo a la casilla de verificación, nada muy especial aquí:

/* aplicar estilo a la casilla de verificación "mantenerme conectado"*/ .keeplogin( margin-top: -5px; ) .keeplogin input, .keeplogin label( display: inline-block; font-size: 12px; font-style: cursiva; ) .keeplogin entrada#loginkeeping( margen derecho: 5px; ) .keeplogin etiqueta( ancho: 80%; )

Aplicaremos estilo a la parte inferior del formulario usando degradados lineales repetidos para crear un fondo rayado.

P.change_link( posición: absoluta; color: rgb(127, 124, 124); izquierda: 0px; altura: 20px; ancho: 440px; relleno: 17px 30px 20px 30px; tamaño de fuente: 16px; alineación de texto: derecha; borde superior: 1 px sólido rgb (219, 229, 232); radio del borde: 0 0 5 px 5 px; fondo: rgb (225, 234, 235); fondo: gradiente lineal repetido (-45 grados, rgb (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 (pantalla: bloque en línea; peso de fuente: negrita; fondo: rgb(247, 248, 241); relleno: 2px 6px; color: rgb(29, 162, 193); margen izquierdo: 10px; texto -decoración: ninguna; radio del borde: 4px; borde: 1px rgb sólido (203, 213, 214); transición: todos los 0,4 s lineales;) #wrapper p.change_link a:hover (color: rgb(57, 191, 215) ); fondo: rgb(247, 247, 247); borde: 1px solid rgb(74, 179, 198); ) #wrapper p.change_link a:active( posición: relativa; arriba: 1px; )

Ahora notarás que tenemos dos formularios bonitos, pero realmente queremos que solo se muestre uno a la vez. ¡¡Ahora es el momento de algunas animaciones!!

Creando la animación de cambio

Lo primero que debe hacer es ocultar el segundo formulario estableciendo la opacidad en 0:

#register( índice z: 21; opacidad: 0; )

¿Recuerda que nuestro formulario de inicio de sesión tenía un índice z de 22? Le daremos al segundo formulario un índice z de 21, para colocarlo "debajo" del formulario de inicio de sesión.

Y ahora la parte realmente buena: cambiar los formularios usando la pseudoclase:target. Lo que realmente debes entender acerca de: target es que usaremos anclajes para realizar la transición. El comportamiento normal de un enlace ancla es saltar al destino en la página. Pero no queremos saltar a ninguna parte, sólo queremos cambiar las formas. Y aquí viene nuestro truco usando los dos enlaces en la parte superior de la página. En lugar de vincular directamente al segundo formulario y arriesgarnos a obtener un efecto de "salto", en realidad colocamos los dos vínculos en la parte superior de la página y les damos pantalla: ninguna. Esto evitará cualquier salto de página. Crédito a quien lo merece: encontré este truco en la creación de CSS3 (en francés).

#toregister:target ~ #wrapper #register, #tologin:target ~ #wrapper #login( índice-z: 22; nombre-animación: fadeInLeft; retardo-animación: .1s; )

Entonces esto es lo que sucede: cuando hacemos clic en el Únete a nosotros botón, activamos el #toregister. Luego hacemos la animación, usando el selector de hermanos ~ para encontrar nuestro elemento #register. Usamos una animación llamada desvanecerse a la izquierda. Dado que "ocultamos" el formulario usando opacidad cero, usaremos una animación que se desvanece para que aparezca. También cambiamos el índice z para que aparezca encima del otro formulario.
Lo mismo ocurre con la otra forma.

Y aquí está el código para la animación. Estamos utilizando el marco de animación CSS3 de Dan Eden y lo adaptamos para este tutorial.

Animar (duración de la animación: 0,5 s; función de sincronización de la animación: facilidad; modo de relleno de la animación: ambos;) @keyframes fadeInLeft (0% (opacidad: 0; transformación: traducirX(-20px);) 100% (opacidad : 1; transformar: traducirX(0); ) )

El formulario que está “desapareciendo” tendrá otra animación que lo hará desaparecer hacia la izquierda:

#toregister:target ~ #wrapper #login, #tologin:target ~ #wrapper #register( nombre-animación: fadeOutLeftBig; ) @keyframes fadeOutLeft ( 0% ( opacidad: 1; transformar: traducirX(0); ) 100% ( opacidad : 0; transformar: traducirX(-20px); ) )

Ahora puedes usar otras animaciones de animate.css de Dan Eden: simplemente ajusta tu clase .animate y reemplaza los nombres de las animaciones. También encontrará algunas animaciones personalizadas al final del archivo animate-custom.css.

Bueno, eso es todo amigos. ¡Espero que hayan disfrutado el tutorial!

Tenga en cuenta que en algunos navegadores clip de fondo: texto no es apoyado. En Internet Explorer 9 las transiciones y animaciones no funcionan, por lo que no habrá cambios de forma complicados. En Internet Explorer 8 y versiones anteriores, la pseudoclase:target no es compatible, por lo que no funcionará en absoluto (solo verá el formulario de inicio de sesión).

El formulario en sí generalmente está destinado a recibir información del usuario para enviarla al servidor, donde el programa de procesamiento recibe los datos del formulario. Un programa de este tipo se puede escribir en cualquier lenguaje de programación del lado del servidor como PHP, Perl, etc. La dirección del programa se indica en el atributo de acción de la etiqueta.

, como se muestra en el ejemplo 1.

Ejemplo 1: envío de datos del formulario

HTML5 IE Cr Op Sa Fx

datos del formulario



En este ejemplo, los datos del formulario indicados por el atributo de nombre (nombre de usuario y contraseña) se pasarán al archivo en /example/handler.php. Si no se especifica el atributo de acción, la transferencia se produce a la dirección de la página actual.

La transferencia al servidor se produce mediante dos métodos diferentes: GET y POST, para establecer el método en la etiqueta.

Se utiliza el atributo de método y sus valores son las palabras clave get y post. Si no se especifica el atributo del método, de forma predeterminada los datos se envían al servidor mediante el método GET. En mesa La Figura 1 muestra las diferencias entre estos métodos.

El método utilizado se puede determinar fácilmente mediante la barra de direcciones del navegador. Si aparece un signo de interrogación y la dirección se ve así, entonces definitivamente se trata de un GET.

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

Una combinación única de parámetros en la barra de direcciones identifica de forma única una página, por lo que las páginas con direcciones ?q=node/add y ?q=node se consideran diferentes. Esta función la utilizan los sistemas de gestión de contenidos (CMS, sistema de gestión de contenidos) para crear muchas páginas de sitios web. En realidad se utiliza un único archivo que recibe una solicitud GET y, según ella, genera el contenido del documento.

A continuación se enumeran las aplicaciones típicas de estos métodos en los sitios.

CONSEGUIR

Transferir pequeños datos de texto al servidor; Búsqueda de sitio.

Los motores de búsqueda y los formularios de búsqueda del sitio siempre se envían mediante el método GET, esto le permite compartir los resultados de la búsqueda con amigos, enviar un enlace por correo o publicarlo en un foro.

CORREO

Transferir archivos (fotos, archivos, programas, etc.); enviar comentarios; Agregar y editar mensajes en el foro, blog.

De forma predeterminada, el formulario se procesa en la pestaña actual del navegador; sin embargo, al enviar el formulario, puede cambiar este parámetro y abrir el controlador de formulario en una nueva pestaña o marco. Este comportamiento se especifica a través del "nombre de contexto", que es el valor del atributo de destino de la etiqueta. . Los valores populares son _blank para abrir el formulario en una nueva ventana o pestaña, y el nombre del marco, que se especifica mediante el atributo de nombre de la etiqueta.



En este ejemplo, cuando hace clic en el botón Enviar, el resultado del envío del formulario se abre en un marco llamado área.

Los elementos del formulario tradicionalmente se colocan dentro de una etiqueta.

, determinando así los datos que se transmitirán al servidor. Al mismo tiempo, HTML5 tiene la capacidad de separar un formulario de sus elementos. Esto se hace por conveniencia y versatilidad, por lo que un diseño complejo puede contener varios formularios que no deben cruzarse entre sí o, por ejemplo, algunos elementos se muestran mediante scripts en un lugar de la página y el formulario en sí se encuentra en otro. . La conexión entre el formulario y sus elementos se produce en este caso a través del identificador del formulario, y a los elementos se debe agregar el atributo del formulario con un valor igual a este identificador (ejemplo 3).

Ejemplo 3: vincular un formulario a campos

HTML5 IE Cr Op Sa Fx

Forma



En este ejemplo la etiqueta

se identifica de forma única a través del identificador de autenticación y form="auth" se agrega a los campos que deben enviarse a través del formulario. En este caso, el comportamiento de los elementos no cambia; cuando se hace clic en el botón, el nombre de usuario y la contraseña se envían al controlador handler.php.

Aunque los parámetros de transferencia de formulario se especifican tradicionalmente en la etiqueta , también se pueden transferir a los botones de envío del formulario (

¿Te gustó el artículo? Compártelo