Los formularios en HTML son los más complejos, pero por otro lado, quizás los más tema interesante en HTML.
Los formularios web permiten a los visitantes del sitio ingresar cierta información en campos especiales y el desarrollador la recibe en la forma que más le convenga.
Usando HTML, puede crear un marco de formulario: campos de texto, menús, listas, botones, casillas de verificación y botones de opción. Es decir, aquellos elementos con cuya ayuda se ingresa cierta información en el formulario.
Luego, los datos ingresados en el formulario se envían al servidor para su procesamiento. Pero HTML aquí es impotente: un programa o script adjunto ya está trabajando en el procesamiento del formulario. Estos programas suelen estar escritos en lenguaje php o javascript.
.
El atributo de acción es obligatorio para cualquier formulario: especifica la dirección del archivo que sirve el formulario ( procesa los datos introducidos en el mismo ).
El atributo del método determina cómo se envía el contenido del formulario. Hay dos métodos: GET y POST. Ahora no tiene sentido profundizar en estos parámetros, ya que el tema del envío de información mediante los métodos GET y POST se relaciona con los lenguajes de procesamiento de datos ( por ejemplo PHP ). Basta saber cuál es exactamente el método de transferencia. publicar datos en la mayoría de los casos se utiliza en formularios.
El atributo deshabilitado deshabilita el campo: el contenido del campo no se puede cambiar y no es accesible. El atributo de solo lectura indica que el campo es de solo lectura (el usuario no tiene la capacidad de editar el contenido, pero está disponible), se puede seleccionar y, por ejemplo, copiar.
Si el contenido del campo excede su tamaño, aparecerá un control deslizante.
Ahora veamos cómo funciona el formulario.
Los formularios HTML son elementos de interfaz complejos. Incluyen diferentes elementos funcionales: campos de entrada Y
La mayor parte de la información del formulario web se transmite utilizando el elemento . Para ingresar una línea de texto, use el elemento , para varias líneas - elemento . Elemento crea una lista desplegable.
Los campos del formulario se pueden dividir en bloques lógicos usando el elemento
. Cada sección se puede nombrar usando el elemento .
Información del contacto
Nombre
Correo electrónico
Arroz. 1. Agrupar campos de formularioPara que el formulario sea más comprensible para los usuarios, se agrega texto a los campos del formulario para proporcionar un ejemplo de los datos de entrada. Este tipo de texto se denomina texto comodín y se crea utilizando el atributo de marcador de posición.
Los campos obligatorios también deben resaltarse. Antes de HTML5, se utilizaba el símbolo de asterisco * junto al nombre del campo. La nueva especificación introduce un atributo obligatorio especial, que le permite marcar un campo obligatorio en el nivel de marcado. Este atributo indica al navegador (suponiendo que admita HTML5) que no envíe datos después de que el usuario haga clic en enviar hasta que se completen los campos especificados.
Para cambiar la apariencia de un campo de texto cuando recibe el foco, utilice la pseudoclase de foco. Por ejemplo, puede oscurecer el fondo del campo actual o agregar un borde de color para que se destaque del resto:
Entrada: foco (fondo: #eaeaea;)
Otro atributo HTML5 útil es el atributo de enfoque automático. Le permite establecer automáticamente el foco en el campo inicial deseado para los elementos. Y (solo un elemento de cada formulario).
Ejemplo de creación de un formulario de registro.
marcado HTML
Nota action="form.php" - enlace al archivo del controlador de formulario. Cree un archivo en codificación UTF-8, cárguelo en el servidor y reemplace action="form.php" con la ruta al archivo en su servidor.
Arroz. 2. Apariencia del formulario predeterminada Como puede ver en la figura, cada elemento del formulario tiene estilos de navegador predeterminados. Aclaremos los estilos y diseñemos los elementos del formulario.
Ajuste de formulario (ancho: 550 px; fondo: #ffd500; radio de borde: 20 px;) .form-wrap *(transición: .1s lineal) .profile (ancho: 240 px; flotador: izquierda; alineación de texto: centro; relleno : 30px; ) formulario (fondo: blanco; flotante: izquierda; ancho: calc(100% - 240px); relleno: 30px; radio de borde: 0 20px 20px 0; color: #7b7b7b; ) .form-wrap:after, formulario div:después ( contenido: ""; mostrar: tabla; borrar: ambos; ) formulario div (margen inferior: 15px; posición: relativa;) h1 (tamaño de fuente: 24px; peso de fuente: 400; posición: relativa ; margen superior: 50px; ) h1:después (contenido: "\f138"; tamaño de fuente: 40px; familia de fuentes: FontAwesome; posición: absoluta; arriba: 50px; izquierda: 50%; transformar: traducirX(-50) %); ) /********************* estilo de elementos de formulario ********************* ** / etiqueta, intervalo (pantalla: bloque; tamaño de fuente: 14px; margen inferior: 8px;) entrada, entrada (ancho de borde: 0; contorno: ninguno; margen: 0; ancho: 100%; relleno: 10px 15px; fondo: #e6e6e6; ) entrada:enfoque, entrada:enfoque (box-shadow: inset 0 0 0 2px rgba(0,0,0,.2); ) .radio etiqueta ( posición: relativa; relleno-izquierda: 50px; cursor: puntero; ancho: 50%; flotante: izquierda; altura de línea: 40px; ) .radio entrada ( posición: absoluta; opacidad: 0; ) .radio -control ( posición: absoluta; arriba: 0; izquierda: 0; altura: 40px; ancho: 40px; fondo: #e6e6e6; radio-borde: 50%; alineación de texto: centro; ) .male:before ( contenido: " \f222"; familia de fuentes: FontAwesome; peso de fuente: negrita; ) .female:before ( contenido: "\f221"; familia de fuentes: FontAwesome; peso de fuente: negrita; ) .etiqueta de radio: entrada flotante ~ . radiocontrol, .radiol input:focus ~ .radio-control ( box-shadow: inset 0 0 0 2px rgba(0,0,0,.2); ) .radio input:checked ~ .radio-control ( color: rojo;) seleccione (ancho: 100%; cursor: puntero; relleno: 10px 15px; contorno: 0; borde: 0; fondo: #e6e6e6; color: #7b7b7b; -apariencia-webkit: ninguno; /* desmarque webkit -browsers */ -moz-appearance: none; /*desmarcar en Mozilla Firefox*/ ) select::-ms-expand ( display: none; /*desmarcar en IE*/ ) .select-arrow ( posición: absoluta ; arriba: 38px; derecha: 15px; ancho: 0; altura: 0; eventos de puntero: ninguno; /*activa la visualización de la lista al hacer clic en la flecha*/ border-style: solid; ancho de borde: 8px 5px 0 5px; color del borde: #7b7b7b transparente transparente transparente; ) botón ( relleno: 10px 0; ancho de borde: 0; pantalla: bloque; ancho: 120px; margen: 25px auto 0; fondo: #60e6c5; color: blanco; tamaño de fuente: 14px; contorno: ninguno; transformación de texto : mayúscula; ) /************************ agregar adaptabilidad al formulario ******************* ** **/ @media (ancho máximo: 600 px) ( .form-wrap (margen: 20 px automático; ancho máximo: 550 px; ancho: 100 %;) .profile, formulario (flotante: ninguno; ancho: 100 % ;) h1 (margen superior: automático; relleno inferior: 50 px;) formulario (radio de borde: 0 0 20 px 20 px;))
Archivo formulario.php
" . "\r\n"; $encabezados .= "Cco: tu_correo electrónico." "\r\n"; if(!empty($nombre) && !empty($sexo) && !empty($correo electrónico) && ! vacío($país) && filter_var($correo electrónico, FILTER_VALIDATE_EMAIL))( correo($correo electrónico, $asunto, $msg, $encabezados); echo "¡Gracias! Te has registrado correctamente."; ) ?>
Nota En la variable $subject, especifique el texto que se mostrará como título de la carta; Su_nombre: aquí puede especificar el nombre que se mostrará en el campo "de quién es la carta"; reemplace your_site_url con la dirección del sitio con el formulario de registro; reemplaza tu_correo electrónico con tu dirección Correo electrónico ; $headers .= "Cco: tu_correo electrónico". "\r\n"; envía bcc a su dirección de correo electrónico.
Etiqueta
(De inglés forma - forma) Instala un formulario en una página web.
El formulario está destinado al intercambio de datos entre el usuario y el servidor. El ámbito de aplicación de los formularios no se limita al envío de datos al servidor; mediante scripts del cliente, puede acceder a cualquier elemento del formulario, modificarlo y aplicarlo a su discreción.
Un documento puede contener cualquier número de formularios, pero sólo se puede enviar un formulario al servidor a la vez. Por este motivo, los datos del formulario deben ser independientes entre sí.
Para enviar el formulario al servidor, utilice Botón de enviar , lo mismo se puede lograr presionando la tecla Enter dentro del formulario. Si falta el botón Enviar en el formulario, Introducir clave imita su uso.
Cuando el formulario se envía al servidor, el control de los datos se transfiere al programa especificado por el atributo de acción del elemento.
. Previamente, el navegador prepara la información en forma de un par “nombre=valor”, donde se define el nombre. atributo de nombre elemento , y el valor lo ingresa el usuario o se establece en el campo de formulario predeterminado. Si se utiliza el método GET para enviar datos, la barra de direcciones puede tener la siguiente forma.Http://www.htmlbook.ru/handler.php?nick=%C2%E0%ED%FF+%D8%E0%EF%EE%F7%EA%E8%ED&page=5
Los parámetros se enumeran después signo de interrogación , especificados después de la dirección del programa del servidor y están separados por un carácter comercial (&). Las letras rusas se convierten a representación hexadecimal (en el formato %HH, donde HH es código hexadecimal para un valor de carácter ASCII), el espacio se reemplaza con un signo más (+).
Permitido dentro del contenedor.
coloque otros elementos, mientras que el formulario en sí no se muestra de ninguna manera en la página web, solo los elementos dentro de él son visibles.
Sintaxis
...
La etiqueta de cierre es obligatoria.
WAI ARIA
Valor de rol predeterminado: forma
Aceptable valores de rol :
ninguno
presentación
buscar
Atributos
Accept-charset: establece la codificación en la que el servidor puede aceptar y procesar datos.
acción: la dirección del programa o documento que procesa los datos del formulario.
autocompletar: permite completar automáticamente los campos del formulario.
enctype: la forma en que se codifican los datos del formulario.
método: método del protocolo HTTP.
nombre: el nombre del formulario.
novalidate: cancela la validación incorporada de los datos del formulario para verificar la exactitud de la entrada.
objetivo: el nombre de la ventana o marco donde el controlador cargará el resultado devuelto.
aceptar juego de caracteres
Establece la codificación en la que el servidor puede aceptar y procesar datos del formulario.
Sintaxis
...
Valores
Nombre de codificación, por ejemplo Windows-1251, UTF-8, etc.
Valor por defecto
La codificación establecida para la página.
acción
Especifica el controlador al que se accede a los datos del formulario cuando se envían al servidor. Puede actuar como manejador programa de servidor o un documento HTML que incluye scripts del lado del servidor (por ejemplo, Parser). Después de que el controlador realiza acciones en los datos del formulario, devuelve un nuevo documento HTML.
Si atributo de acción ausente, página actual se recarga, devolviendo todos los elementos del formulario a sus valores predeterminados.
Sintaxis
...
Valores
El valor se toma como total o camino relativo al archivo del servidor.
Valor por defecto
autocompletar
Controla el autocompletar de los campos del formulario. El valor puede ser anulado por el atributo de autocompletar. elementos específicos formas.
El autocompletar lo realiza el navegador, que recuerda los valores escritos la primera vez que lo ingresa y luego los sustituye cuando los vuelve a escribir en los campos del formulario. En este caso, la función de autocompletar se puede desactivar en la configuración del navegador y no se puede cambiar en este caso utilizando el atributo de autocompletar.
Cuando ingresas las primeras letras del texto, se muestra una lista de valores previamente guardados, entre los cuales puedes seleccionar lo que necesitas.
Sintaxis
...
Valores
on: habilita el autocompletado del formulario.
off: desactiva el autocompletar. Este valor generalmente se usa para evitar que el navegador guarde datos importantes (contraseñas, números tarjetas bancarias ), así como datos únicos o raramente ingresados (captcha).
Valor por defecto
enctipo
Determina cómo se codifican los datos del formulario cuando se envían al servidor. Por lo general, no es necesario configurar el atributo enctype; los datos se entienden bastante correctamente en el lado del servidor. Sin embargo, si está utilizando un campo de envío de archivos (tipo de entrada = "archivo"), debe definir el atributo enctype como multipart/form-data.
Sintaxis
...
Valores
application/x-www-form-urlencoded: en lugar de espacios, coloque +, los símbolos como las letras rusas están codificados por ellos valores hexadecimales (por ejemplo, %D0%90%D0%BD%D1%8F en lugar de Anya).
multipart/form-data: los datos no están codificados. Este valor se utiliza al enviar archivos.
texto/sin formato: los espacios se reemplazan con un signo +, las letras y otros caracteres no están codificados.
Valor por defecto
aplicación/x-www-formulario-urlencoded
método
El atributo del método le informa al servidor sobre el método de solicitud.
Sintaxis
...
Valores
El valor del atributo del método no distingue entre mayúsculas y minúsculas. Hay dos métodos: obtener y publicar.
get: este método es uno de los más comunes y está diseñado para obtener la información requerida y transferir datos a Barra de dirección . Luego, los pares nombre=valor se agregan a la dirección después del signo de interrogación y se separan por un signo comercial (&). La conveniencia de usar el método get es que la dirección con todos los parámetros se puede usar repetidamente, guardándola, por ejemplo, en los marcadores de su navegador, y también puede cambiar los valores de los parámetros directamente en la barra de direcciones.
correo - Método de publicación envía datos al servidor en una solicitud del navegador. Esto le permite enviar gran cantidad datos de los que están disponibles obtener método , ya que la publicación no tiene límite de 4Kb. Se utilizan grandes cantidades de datos en foros, servicios postales , llenando la base de datos, al enviar archivos, etc.
Valor por defecto
nombre
define nombre único formas. Normalmente, el nombre del formulario se utiliza para acceder a sus elementos a través de scripts.
Sintaxis
...
Valores
El nombre es un conjunto de caracteres, incluidos números y letras. JavaScript distingue entre mayúsculas y minúsculas, por lo que cuando acceda a un formulario por nombre a través de scripts, utilice la misma ortografía que el atributo de nombre.
Valor por defecto
novalidar
Cancela la verificación incorporada de los datos ingresados por el usuario en el formulario para verificar su exactitud. Esta verificación la realiza automáticamente el navegador cuando el formulario se envía al servidor y se realiza para los campos , , así como si existe algún patrón o atributo requerido.
Sintaxis
...
Valores
Valor por defecto
De forma predeterminada, este atributo está deshabilitado.
objetivo
Una vez que el controlador del formulario recibe los datos, devuelve el resultado como un documento HTML. Puede definir el marco en el que se cargará la página web resultante. Para este fin se utiliza atributo objetivo , su valor es el nombre del marco. Si no se establece el objetivo, el resultado devuelto se muestra en la pestaña actual.
Sintaxis
...
Valores
El valor es el nombre del marco, especificado por atributo nombre del elemento
_blank: carga la página en nueva pestaña navegador.
_self: carga la página en la pestaña actual.
_parent: carga la página en el marco principal; si no hay marcos, entonces este valor funciona como _self.
_top: cancela todos los marcos y carga la página en la ventana del navegador; si no hay marcos, entonces este valor funciona como _self.
Valor por defecto
Especificaciones
Ejemplos
FORMA
¿Cómo crees que significa la abreviatura "OS"?
Oficiales
Sistema operativo
Gran mosca rayada
Yo, como el autor del artículo, he logrado mucho en método CSS empujando, pero falló aún más. Especialmente tiempo. Y si hubiera comprendido inmediatamente los principios de cosas como el posicionamiento y la flotación, entonces tareas simples De hecho, habría sido sencillo desde el principio. Para ello, a menudo faltan lugares donde se nos expliquen con los dedos los conflictos y anomalías de esos lenguajes de programación que de repente no nos enseñan desde la infancia. Bueno, no nos quedan claros a nivel intuitivo, y qué. Sí, y las ayudas no siempre se leen.
Si tienes la misma historia, entonces esta es tu lectura de la noche.
Una de las revelaciones que recibí después de leerlo fue la comprensión de cómo funciona el posicionamiento, en particular la diferencia entre absoluto y relativo (absoluto, relativo). Si lees hasta el final, sabrás exactamente cuándo y cómo funciona cada uno. Todo se presenta aquí mediante ejemplos de listas e imágenes.
Cinco valores de posicionamiento En CSS tenemos una lista de cinco valores de posicionamiento div. elementos de bloque :
Estático - estático. Relativo - relativo. Heredar - heredado. Fijo - fijo. Absoluto - absoluto.
Despejemos un poco el camino quitando heredar , simplemente porque esta propiedad de posicionamiento no necesita análisis adicional. Le dice al elemento que herede las propiedades de su padre y listo. Y en versiones anteriores de Internet Explorer no es compatible en absoluto.
De forma predeterminada, el posicionamiento está configurado en estático . Cualquier elemento con posicionamiento estático estará donde se espera, dependiendo totalmente de la estructura del HTML.
Ahora fijado . Este es un gran ancla. Cuando esté equipado con este valor, los elementos permanecerán donde los coloquemos y no se moverán incluso cuando se desplacen. Esto se utiliza a menudo para congelar las barras laterales de navegación, lo cual es terrible para el contenido.
Entonces, hemos descubierto los tres valores de posicionamiento y podemos considerarlos comprensibles. Simplemente porque su funcionalidad no tiene repeticiones ni variaciones. Quedan cosas interesantes - absoluto Y relativo . Veámoslos individualmente y luego cómo se pueden utilizar juntos. Y también que resultados interesantes puede dar.
posicionamiento absoluto posicionamiento absoluto le permite sacar un objeto del flujo normal del documento y pegarlo en un punto específico de la página. Creemos una lista simple: lista desordenada.
Como sabemos, sus elementos ya están en valor estático, automáticamente. Esto significa que fluyen en el flujo de otros elementos del documento donde se ubican según su estructura html. Ahora veamos qué sucede si asigna uno de los elementos de la lista. absoluto con coordenadas cero.
>ul li:nésimo-niño(4)( posición:absoluta; izquierda: 0; arriba:0;)
Como puede ver, se elimina del flujo general y se coloca en la esquina superior izquierda de la ventana del navegador. Tenga en cuenta que a un elemento absolutamente posicionado no le importa si hay otro en ese lugar o no. Todavía se colocará según las coordenadas.
Entonces, necesitamos posicionamiento absoluto cuando necesitamos colocar un elemento exactamente en el lugar de la pantalla donde queremos verlo. En consecuencia, su posición se mide mediante sangrías en la parte superior, derecha, inferior e izquierda del borde de la ventana.
Por ejemplo, coloquemos el mismo cuarto elemento de la lista con una sangría de veinte píxeles a la izquierda y veinte arriba.
ul li:nésimo-niño(4)( posición:absoluta; izquierda: 20
píxeles; arriba: 20
píxeles;)
Movido un poco hacia abajo y hacia la derecha. Y para confirmar lo dicho de que un elemento con posicionamiento absoluto no influye en la ubicación de otros, le daremos coordenadas que proporcionen una colisión uniforme.
ul li:nésimo-niño(4)( posición:absoluta; izquierda: 60
píxeles; arriba: 80
píxeles;)
En conclusión, observemos el comportamiento de los elementos restantes de la lista. Cuando el cuarto se elimina del flujo, el resto se alinea automáticamente en la cola como si no estuviera allí: al tercero le sigue inmediatamente el quinto. Recordemos esto y luego usémoslo a nuestro favor.
Posicionamiento relativo Posicionamiento relativo funciona de la misma manera que absoluto: dándole al objeto su posición usando las coordenadas superior, derecha, inferior e izquierda. La única diferencia es el punto de partida: la posición del punto de coordenadas cero. Para un posicionamiento absoluto, era el borde de la pantalla del navegador. ¿Y para el familiar?
Vamos a ver:
ul li:nésimo-niño(4)( posición: relativo ; izquierda: 0
píxeles; arriba: 0
píxeles;)
¿Cómo es eso? El cuarto punto permaneció en su lugar en el flujo de elementos. Esto se debe a que el punto de partida de sus coordenadas ahora no es el borde de la ventana del navegador, sino el elemento que lo precede en la secuencia. Él también es su padre.
Ahora, si cambiamos la posición de nuestro sujeto experimental en veinte píxeles, evaluaremos claramente el resultado de tal relación.
ul li:nésimo-niño(4)( posición: relativo ; izquierda: 20
píxeles; arriba: 20
píxeles;)
Este extremo puede resultar útil en situaciones reales. Por ejemplo, cuando no queremos tirar un elemento, sino jugar a colocarlo sobre otros. Tenga en cuenta que el posicionamiento relativo no se preocupa por los elementos inferiores de la misma manera que el posicionamiento absoluto. Pero aquí ya no ocupan el lugar de los que se fueron.
Poniendolo todo junto Ahora que hemos aprendido las reglas básicas para el comportamiento de los elementos HTML con posicionamiento absoluto y relativo a través de CSS, creemos un completo y ejemplo claro el trabajo de todo esto.
HTML Comencemos creando un bloque HTML de la clase "foto" e inmediatamente coloquemos en él una imagen de 200x200 píxeles.
Ahora es el momento de pasar a editar nuestro CSS.
CSS básico Primero, cambiemos el fondo a oscuro. Luego agregaremos estilos básicos a la foto: le daremos un marco y agregaremos sombras.
cuerpo (fondo: #69C;)
Foto ( borde: 5px blanco sólido; altura: 200 píxeles; ancho: 200px; margen: 50px automático;
/*sombras difíciles pero geniales*/ -webkit- sombra de cuadro: 0px 10px 7px rgba (0,0,0,0.4), 0px 20px 10px rgba (0,0,0,0.2); }
Bueno, en general, aquí está nuestra foto. Nada especial, pero se ha creado el campo de entrenamiento.
Colgar una tira de cinta Digámoslo así: queremos crear la impresión de que las fotos están pegadas a la pared con trozos de cinta adhesiva. Para hacer esto, necesitamos mostrar lo que ya hemos aprendido y agregar un pseudoelemento.
Primero, para crear nuestra película, utilizamos el pseudoelemento “antes” “:before”. Su configuración CSS le indicará a la cinta que tenga veinte píxeles de alto y cien píxeles de largo. Además, con un fondo blanco, al que se le asigna una opacidad del cincuenta por ciento, es película. Bueno, tenya,¿dónde estaríamos sin ella?
Foto:antes ( contenido: "escocés"; altura: 20 píxeles; ancho: 100px;
}
Sí, aquí la película no se apega a nada más que a sí misma...
Es obvio que tenemos problemas con el posicionamiento del pseudoelemento. Intentemos corregir la situación utilizando el posicionamiento relativo.
Foto:antes ( contenido: "escocés"; altura: 20 píxeles; ancho: 100px; fondo: rgba(255,255,255,0.5);
posición: relativo ; arriba: 0
píxeles; izquierda: 0
píxeles;
Webkit-box-shadow: 0px 1px 3px rgba(0,0,0,0.4); -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.4); sombra de cuadro: 0px 1px 3px rgba(0,0,0,0.4); }
Excelente. Que efecto...
Como puedes ver, no hemos solucionado el problema. Bueno, como el posicionamiento relativo no funcionó, vayamos a direccion opuesta y probemos lo absoluto.
Foto:antes ( contenido: "escocés"; altura: 20 píxeles; ancho: 100px; fondo: rgba(255,255,255,0.5);
posición: absoluto ; arriba: 0
píxeles; izquierda: 0
píxeles;
Webkit-box-shadow: 0px 1px 3px rgba(0,0,0,0.4); -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.4); sombra de cuadro: 0px 1px 3px rgba(0,0,0,0.4); }
Pero esto está más cerca del tema.
Finalmente, la cinta tomó la forma ordenada. Pero por ahora está aburrido en algún rincón. Inmediatamente se sugiere un cambio de coordenadas para moverlo a donde lo necesitamos. Pero esto no es una solución: la cinta se detendrá en un punto determinado y comenzará a moverse junto con el cambio en el tamaño de la pantalla.
Bueno, probamos tanto el relativo como el absoluto para el posicionamiento. Pero todavía no estamos satisfechos ni con una ni con la otra como solución.
¿Que sigue? Y, por ejemplo, la historia sobre el posicionamiento absoluto de los elementos no está completa. Verás, la esquina superior izquierda de la pantalla no siempre está Punto cero Coordenadas para un elemento absolutamente posicionado. En cambio, nuestro pseudoelemento "absoluto" estará orientado por al primer ancestro no estático . EN en este caso - de la foto.
¿Qué obtenemos de esto? Mucho: podemos usar el posicionamiento absoluto para la cinta. Pero antes de eso, debemos cambiar algo sobre su padre, sobre la foto. Y como no queremos que la cinta se mueva arbitrariamente a lo largo de la foto dependiendo de la resolución de la pantalla, le aplicaremos un posicionamiento relativo.
Foto ( borde: 5px blanco sólido; altura: 200 píxeles; ancho: 200px; margen: 50px automático; posición: relativo ;
-moz-box-shadow: 0px 10px 7px rgba(0,0,0,0.4), 0px 20px 10px rgba(0,0,0,0.2); sombra de cuadro: 0px 10px 7px rgba (0,0,0,0.4), 0px 20px 10px rgba (0,0,0,0.2); }
Foto:antes ( contenido: "escocés"; altura: 20 píxeles; ancho: 100px; fondo: rgba(255,255,255,0.5); posición: absoluto ; arriba: 0
píxeles; izquierda: 0
píxeles;
Webkit-box-shadow: 0px 1px 3px rgba(0,0,0,0.4); -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.4); sombra de cuadro: 0px 1px 3px rgba(0,0,0,0.4); }
Entonces, un pseudoelemento con posicionamiento absoluto eligió la esquina superior izquierda del primero de los ancestros no estáticos como punto de referencia para sus coordenadas. Es decir, el ángulo de la foto coincide exactamente con esta descripción. Por lo tanto, la cinta siempre quedará pegada en esta esquina, incluso si cambia el tamaño de la ventana del navegador.
Ahora que hemos encontrado el punto de partida, podemos mover la cinta a la ubicación que necesitamos ajustando los valores superior e izquierdo. prestar atención a significado negativo para el punto superior. Al observar el resultado, entenderás por qué. El valor izquierdo se establece para centrar la cinta horizontalmente. Alguien "calculadora instantánea" mostrará claramente cómo se calcula esto.
Foto:antes ( contenido: ""; altura: 20 píxeles; ancho: 100px; fondo: rgba(255,255,255,0.5); posición: absoluto ; arriba: -15
píxeles; izquierda: 50
píxeles;
Webkit-box-shadow: 0px 1px 3px rgba(0,0,0,0.4); -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.4); sombra de cuadro: 0px 1px 3px rgba(0,0,0,0.4); }
Como podemos ver desde imagen final — combinar el posicionamiento absoluto y relativo nos dio exactamente lo que necesitábamos para lograr el efecto deseado y comprender cómo funcionan estas dos propiedades.
También echa un vistazo a Tinkerbean. En esencia, este es un generador de código muy útil. varios efectos .
Conclusión Colocar elementos de bloques puede ser una tarea realmente difícil sin dominar conceptos básicos sobre él. Sin embargo, sólo es necesario tener en cuenta tres cosas para poder aplicar y combinar sus parámetros a tiempo.
La primera es que el posicionamiento relativo le permite alinearse con un punto de partida específico. La segunda es que también puedes configurar relativo al primer ancestro no estático, y no sólo al borde de la ventana del navegador, como ocurre con el valor "posición: ninguna" . Y finalmente: ni el posicionamiento relativo ni absoluto de un objeto afecta a los objetos estáticos y fijos que lo rodean. Recordemos desde el principio del artículo: los elementos absolutamente posicionados se eliminan del flujo y los relativos toman las posiciones de otras personas.
Notas Los teléfonos móviles y tabletas obsoletos no perciben bien el parámetro de posicionamiento "fijado" . O mejor dicho, no lo perciben. Los menús a los que está asignado se deslizan por la pantalla junto con el contenido como si fueran "estático" . Con la llegada de iOS 5+, todo volvió a la normalidad, pero no antes. La forma en que todo lo escrito aquí fue percibido, por ejemplo, por el séptimo explorador de Internet – No quiero ni hablar de eso. Había incluso menos ganas de pensar en cómo hackear CSS. Por lo tanto, para el demonio, hice capturas de pantalla de toda la belleza y las codifiqué en HTML con construcciones como: Сюда тупо скрин для Эксплорера.
Y aquí está el código completo para navegadores normales .
Entonces, si no eres demasiado vago para publicar tus soluciones usando únicamente CSS, entonces los comentarios están a tu servicio. Salvemos el mundo.
Descripción
Establece cómo se coloca un elemento en relación con la ventana del navegador u otros objetos en la página web.
Sintaxis
posición: absoluta | fijo | relativo | estática | heredar
Valores absoluto Indica que el elemento está en una posición absoluta, lo que hace que otros elementos aparezcan en la página web como si el elemento no estuviera en una posición absoluta. La posición del elemento está especificada por las propiedades left, top, right y bottom, y la posición también se ve afectada por el valor. propiedades de posición
elemento padre . Entonces, si el valor de posición del padre se establece en estático o no hay ningún padre, entonces las coordenadas se cuentan desde el borde de la ventana del navegador. Si el valor de posición del padre es fijo, relativo o absoluto, entonces las coordenadas se cuentan desde el borde del elemento padre. fijo En su acción, este valor es cercano a absoluto, pero a diferencia de él, está vinculado al punto en la pantalla especificado por las propiedades izquierda, superior, derecha e inferior y no cambia su posición al desplazarse por la página web. Navegador Firefox no se muestra en absoluto barras de desplazamiento , si la posición del elemento está configurada como fija y no encaja completamente en la ventana del navegador. EN navegador ópera Aunque se muestran barras de desplazamiento, no afectan la posición del elemento de ninguna manera. relativo La posición del elemento se establece en relación con él. lugar original . Agregar las propiedades left, top, right y bottom cambia la posición del elemento y lo mueve hacia un lado u otro desde su ubicación original. Los elementos estáticos se representan como de costumbre. El uso de las propiedades left , top , right y bottom no produce ningún resultado. heredar Hereda el valor del padre. HTML5 CSS2.1 IE Cr Op Sa Fx
posición
Resultado este ejemplo mostrado en la Fig. 1.
Arroz. 1. Usando la propiedad de posición
modelo de objetos
document.getElementById("elementID ").estilo.posición
Navegadores
El navegador Internet Explorer 6 no admite el valor fijo. Internet Explorer anterior a la versión 8.0 no admite el valor heredado.