Problemas de CSS con elementos de formulario. Selector de pseudoclase estructural

Los selectores CSS son una de las características principales. lenguaje CSS. Los selectores le permiten acceder a un grupo de elementos o solo a uno de ellos.

Selectores en CSS

Los selectores se utilizan para indicarle al navegador qué elementos aplicar los estilos descritos entre llaves.

P(estilos…)

En este caso, el selector es p – etiqueta de párrafo. Esta regla agregará estilos a todos los párrafos de una página web.

¿Cuáles son los tipos de selectores CSS?

Selector de etiquetas: el más simple. Se ha demostrado con un ejemplo. Para escribirlo en CSS, debe escribir el nombre de la etiqueta sin corchetes angulares. Los estilos se aplicarán a todos los elementos con esa etiqueta.
table() – estilos para todas las tablas
li() – estilos para todos los elementos de la lista
a() – estilos para todos los enlaces

clase de estilo– puede adjuntar una clase de estilo a cualquier elemento de una página web. Incluso a una letra. Luego, en el archivo css puedes acceder a este elemento escribiendo para él. estilos propios. Para hacer esto, debe poner un punto y escribir el nombre de la clase de estilo después de él. Ejemplos:
.about() – las reglas se aplicarán a todos los elementos que tengan atributo de clase= "sobre"
.down() – las reglas se aplicarán a todos los elementos que tengan el atributo class = "down"
.float() – las reglas se aplicarán a todos los elementos que tengan el atributo class = "float"

Como puede ver, lo principal es dejar un punto. Una clase de estilo se puede vincular a un número ilimitado de elementos. A un elemento se le pueden asignar varias clases.

Identificador– otro tipo de selector. Se puede asignar un identificador a un solo elemento. No puede tener dos identificadores y la identificación asociada a este elemento no se puede registrar en ningún otro lugar.

Está configurado así:

Párrafo

Es decir, al igual que una clase, sólo se utiliza el atributo. identificación cualquier palabra se utiliza como significado.

Para acceder a un elemento con un identificador a través de CSS, debe escribir el valor de identificación y anteponer un hash.

#primero (tamaño de fuente: 22px)

Pasamos al párrafo con identificación = primero. El estilo sólo se aplicará a él. Para los párrafos restantes, el tamaño de fuente no cambiará.

Pseudoclases

Hay un tipo interesante de selector en CSS: las pseudoclases. Es decir, clases que los elementos tienen por defecto y no es necesario especificarlas adicionalmente. Algunos de ellos sólo funcionan para enlaces, mientras que otros se pueden aplicar a todos los elementos. De todos modos pseudoclases css Facilita mucho el trabajo de un desarrollador web.

Una pseudoclase es una clase de estilo de un elemento que en realidad no definimos nosotros mismos, simplemente existe por sí solo. Por ejemplo, viendo este código en html:

Párrafo

Se nota absolutamente que este párrafo tiene una clase especial, porque está escrito allí. Pero no es necesario escribir pseudoclases; los elementos las tienen por defecto, y esta es su ventaja en este caso. A continuación, veamos los más populares.

Para enlaces

Para campos de entrada y enlaces

:focus: el estilo se aplica al elemento que recibe el foco de entrada.
De hecho, hay muchas pseudoclases nuevas e interesantes para los campos de entrada, pero todas son nuevas en CSS3, y en este artículo me gustaría discutir solo los más simples. Definitivamente habrá un artículo sobre selectores CSS3 en el futuro.

Para todos los elementos

  1. :hover – estilo aplicado al pasar el cursor sobre un elemento
  2. :first-child – selecciona el primer elemento hijo
  3. :last-child – último elemento hijo
  4. :nth-child(): se escribe un número o fórmula entre paréntesis que determina qué elementos se seleccionarán.
  5. :primero de tipo, :último de tipo, :nésimo de tipo(): funcionan de forma casi idéntica a las pseudoclases anteriores. La única diferencia es que aquí se tiene en cuenta el tipo de elemento. La diferencia se puede sentir en el siguiente ejemplo:
    li:first-child: se seleccionará el primer elemento de la lista, pero solo si el elemento li aparece primero en el bloque principal. Si hay otra etiqueta antes, no se seleccionará nada.
  6. li:primero de tipo: se seleccionará el primer elemento de la lista de todos los que están en el elemento principal. No importa dónde se encuentren en el código. Espero que la diferencia sea clara.
  7. :nth-last-child: funciona de manera similar a :nth-child, pero cuenta desde el último elemento, no desde el primero.
  8. :nth-last-of-type – similar a :nth-last-child, pero teniendo en cuenta el tipo de elemento.

No todas estas son pseudoclases, sino las más populares y necesarias. En realidad, todas las pseudoclases están marcadas de la misma manera en CSS, separadas por dos puntos. Además, puedes combinar selectores y obtener oportunidades interesantes:
a:visited:active: estilos para el enlace ya visitado en el que se hace clic.
div:first-child:hover: estilos para todos los primeros bloques de sus padres sobre los que se desplaza el cursor.

Como puede ver, estos selectores dan grandes oportunidades en términos de elementos de estilo. Utilízalos y podrás llegar fácilmente a cualquier elemento.

Combinando selectores

una cosa mas regla importante, que necesitas saber. Los selectores de clases de estilo se pueden escribir sin separarlos entre sí. Por ejemplo:
.class1.class2: seleccionará aquellos elementos que tengan ambas clases.
.class1.class3.class8: seleccionará elementos a los que se adjuntan las tres clases de estilo.

Selectores anidados

Si separamos los selectores entre sí con espacios, podemos llegar al elemento que necesitamos. Ejemplos:
table td: selecciona todas las celdas de las tablas
ul li a – selecciona todos los enlaces ubicados en los elementos de la lista (y los elementos de la lista, a su vez, se encuentran en las propias listas)
.class1 p – seleccionará todos los párrafos con el atributo class = “class1”
.class2 p span: seleccionará todos los contenidos de etiquetas contenidos en párrafos con clase class2.

Puedes anidar y combinar de esta manera tantas veces como quieras. Ejemplos:
#encabezado .logo span:primera letra()– selecciona la primera letra en el espacio del logotipo, que se encuentra en el encabezado
.class1.class2:hover() – definirá el estilo de desplazamiento para elementos que tengan ambas clases de estilo.

Selectores infantiles

Si necesita aplicar estilo a los elementos principales que son Filiales DIRECTAMENTE, entonces necesitas escribirlo así:
ul > li() – seleccionará los elementos de la lista que están anidados directamente en ella y no ubicados en otras etiquetas
p > a() – seleccionará sólo aquellos enlaces en párrafos que se encuentren directamente dentro de ellos, y no anidados en otras etiquetas (que, a su vez, ya están anidadas en párrafos)
Ejemplo:

Si escribe un selector como este p > a , ¿se aplicarán los estilos al enlace en el ejemplo anterior? No, porque todavía está anidado en otra etiqueta, es decir, no es hijo directo.

Selectores adyacentes

Lo último que veremos hoy. Si lo escribes en CSS así:
.class1 + .class4() , entonces este selector seleccionará el elemento con el atributo class = "class4" , y este elemento debe aparecer en el código HTML inmediatamente después del elemento con la clase class1. Sólo en este caso todo funcionará. Veamos un ejemplo nuevamente:

¿Funcionará el selector anterior (.class1 + .class4())? No, porque los elementos no están uno al lado del otro. entre ellos esta etiqueta img. Si lo eliminas, todo funcionará.

Entonces, hemos analizado los selectores más básicos y simples. Seguramente este conocimiento te será suficiente para resolver el 95% de los problemas. En el próximo artículo describiré algunos selectores de CSS más específicos.

Selectores de atributos

Le permite seleccionar elementos específicos sin asignarles una clase de estilo o identificador.

Los selectores de atributos son aquellos selectores en los que se escribe entre corchetes un atributo o un atributo con un valor. Algunos ejemplos para que quede claro:
* – selecciona todos los elementos que tienen un atributo href con cualquier valor.
entrada: selecciona todos los elementos de entrada que tienen un atributo deshabilitado (todos los campos deshabilitados).
entrada: selecciona todos los campos cuyo tipo es contraseña, es decir, campos para ingresar una contraseña.
img: selecciona una imagen que tiene el valor especificado. atributo src= "/logo.png" .

Como puede ver, escribir selectores de atributos CSS no es tan difícil. Su diferencia más importante es corchetes, en el que se escribe solo un atributo o un atributo con su valor exacto. Pero la funcionalidad de estos selectores no termina ahí.

Selectores de atributos CSS avanzados

Todos los siguientes selectores distinguen entre mayúsculas y minúsculas.
Buscar al principio de una línea
div: selecciona todos los divs que tienen una clase de estilo que comienza con "bloque". Así, por ejemplo, se seleccionarán los siguientes bloques: "block-head", "block-3", "blocknote". Lo principal es que al comienzo del significado hay una palabra clave.

Encontrar al final de una cadena
a – selecciona todos los enlaces cuya dirección termina en .rar. Por lo tanto, si puede descargar algo en su sitio web, puede agregar un ícono junto a todos los enlaces a archivos archivados.

Encontrar una subcadena en todas partes de un valor
span – selecciona todo abarcar etiquetas, en el que el nombre de la clase contiene "arte" en cualquier parte del nombre. Así, por ejemplo, se seleccionarán spans con las siguientes clases: party, clart, art-1.

Buscar prefijos
p: seleccionará párrafos con una clase de estilo que tenga un nombre que coincida exactamente con "primero" o que contenga el primer prefijo que comienza el nombre de la clase.

Encontrar palabras con significado
aporte– seleccionará todos los elementos de entrada en los que el valor del atributo identificador contenga la palabra texto. Se diferencia de buscar una subcadena en todas partes en que es la palabra la que debe incluirse, no la subcadena.

Las dos últimas opciones rara vez se utilizan y es poco probable que le resulten útiles con frecuencia, pero para desarrollo general todavía puedes saber sobre ellos.

¿Para qué sirven los selectores de atributos?

Con estos selectores, puede seleccionar muchos elementos HTML sin darles clases de estilo. En algunos casos, con este método puedes acortar el código y simplificar tu trabajo. Por ejemplo, arriba di un ejemplo con un icono de archivo. Aquí apareció otra idea. Por ejemplo, en su sitio web a menudo enlaza a otro recurso (Wikipedia, por ejemplo) y desea mostrar un icono especial junto a los enlaces a Wikipedia, que otros enlaces no deberían tener.

Puedes implementarlo así:

A (reglas CSS)

De hecho, hay muchas más formas de utilizar selectores de atributos. Hasta cierto punto, pueden simplificar el trabajo donde sea necesario. Utilice css y suscríbase al blog para obtener más información sobre el desarrollo web.

Selectores CSS3 y pseudoclases.

Acerca de los nuevos selectores CSS3, sobre los cuales no escribí en artículos anteriores.

Trabajo mejorado con formularios.

Estas son nuevas pseudoclases. Básicamente, todos se refieren a nuevas posibilidades de formas.
: habilitado: la pseudoclase seleccionará todos los campos activos. Es decir, aquellos en los que se puede escribir algo o al menos son legibles.
:disabled es la pseudoclase opuesta, selecciona todos los campos deshabilitados. En consecuencia, con su ayuda puede agregar estilos adicionales a dichos campos.
:solo lectura – seleccionar todo aporte, que son de solo lectura.
:lectura-escritura: selecciona todos los campos que son editables.

Agregar estilos teniendo en cuenta la validez

También existen pseudoclases muy interesantes con las que puedes asignar estilos en función de la validez o invalidez del valor introducido. Anteriormente, esto sólo se podía hacer usando JavaScript.
: válido: selecciona todos los campos en los que el valor ingresado satisface los requisitos. Los requisitos en sí suelen especificarse mediante el atributo de patrón. También puede depender del tipo de campo. Por ejemplo, el campo en el que está escrita la dirección. correo electrónico, se considerará inválido si no hay @ en el valor ingresado.
:inválido: en consecuencia, selecciona todos los campos no válidos en los que el valor no corresponde a lo esperado. Por ejemplo, puedes hacer que el color del texto en campos como este sea rojo:

Entrada: no válida (color: rojo;)

Ahora si escribimos valores incorrectos en los campos, el texto se vuelve rojo. En consecuencia, también puede utilizar imágenes de una marca de verificación y una cruz para mostrarle al usuario si completó todo correctamente.

Estilos para campos obligatorios

También me gustaría señalar que ha aparecido la pseudoclase correspondiente para los campos obligatorios.
:requerido – seleccionará elementos que tengan este atributo. Es decir, es obligatorio completar todos los campos.
:opcional: la clase opuesta seleccionará campos que sean opcionales.

Pseudoclase: no

:not es una especie de antiselector que permite determinar qué elementos NO UTILIZAR estilos. Un par de ejemplos.
a:not(:last-child)() – seleccionará todos los enlaces de la página excepto el último.
.nav:not(li)() – seleccionará todos los elementos con la clase de navegación, pero estos no deben ser elementos de la lista (li).
#article p:not(.special:first-child): seleccionará todos los párrafos del bloque de artículo excepto el primer párrafo con la clase especial.

Como puede ver, entre paréntesis está escrita una condición para la pseudoclase: qué es exactamente lo que debe excluirse de la selección. También puede escribir selectores de combinación en la condición, para poder seleccionar y excluir lo que desee.

Ésta es la pseudoclase que a veces se necesita, se necesita no sólo en teoría, sino también en la práctica. Ah, sí, también puedes continuar componiendo el selector después de :not(). Por ejemplo:
div:not(#header) .wrap: selecciona todos los divs con la clase wrap, excepto el div con id="header"

Estos fueron selectores que se introdujeron en CSS3.

Prioridad de los selectores CSS.

Para determinar qué estilos tienen prioridad, utilice estas sencillas reglas:
ID es el selector de mayor prioridad. Si un elemento tiene una clase de estilo y un id, y ambos están asignados propiedades idénticas con valores diferentes, entonces se ejecutarán los estilos que están escritos para el identificador.

La clase es un selector de mayor prioridad que el selector de etiquetas (p, table, ul). Una pseudoclase tiene el mismo peso que una clase simple. p:first-line tiene prioridad sobre .firstline porque el segundo selector es solo una clase, mientras que el primero es un selector de etiquetas + pseudoclase.

una cosa mas regla útil— cuanto más específico sea el selector, más prioridad tendrán los estilos para él. Por ejemplo, entre cuerpo y p, el párrafo gana la batalla porque es un selector más específico que el cuerpo (porque es la página completa, por lo que no es muy específico). Y la tabla p, a su vez, es más específica que solo p. En general, sólo tenga en cuenta estas reglas.

En pocas palabras

Este artículo ha cubierto casi todos los selectores de CSS. También me gustaría agregar que si usas jQuery, entonces tiene sus propios selectores, aunque son muy similares a estos, pero hay ligeras diferencias.

El selector es el principal elemento de control del funcionamiento (de una transmisión automática), que representa (en versión clásica) palanca con dial elementos adicionales controles (botones).

El funcionamiento de la palanca selectora es para cambiar los modos de conducción (avance, marcha atrás, punto muerto, bloqueo de estacionamiento).

Tipos de selectores de transmisión automática.

Con el desarrollo de la industria automotriz, la ubicación del selector también cambió. Hay los siguientes tipos Ubicación de la palanca selectora:

Columna de dirección. Típico de los coches americanos fabricados antes de principios de los años 90. Esta disposición del selector contribuyó a la facilidad de operación debido a su compacidad, y también permitió colocar un asiento más ancho delante para 3 personas;

Pulsador panel . Este contraste Transmisiones automáticas de algunos modelos que eran de los años 50. producido por Honda y Chrysler. También se encuentran en automóviles de marcas japonesas producidos para consumo propio o para el mercado americano. Cómodo de usar en automóviles y minivans de gran altura;

Piso. Típico de Europa fabricantes japoneses Orientado al mercado europeo.

Sistemas de protección de conmutación involuntaria

  • Varios sistemas de protección del selector evitan posibles averías Transmisión automática por cambio de modo espontáneo o aleatorio.
  • Botón de bloqueo (montado en el suelo)
  • Un esquema de cambio de modo especial, que primero implica cambiar el selector al conductor y luego cambiar el modo deseado.
  • El llamado método de "receso" antes de cambiar.
  • Cambiar de modo solo antes de presionar el pedal del freno.

A pesar de la abundancia de sistemas de seguridad, el selector de transmisión automática, como todas las demás unidades, puede fallar.

Reparación del selector de transmisión automática.

La reparación y el diagnóstico inoportunos de las transmisiones automáticas pueden provocar una disminución de la capacidad de control del vehículo y, en consecuencia, la aparición de situaciones de emergencia.

A menudo, la avería de un automóvil con transmisión automática es el resultado del descuido del conductor, la inexperiencia y el reemplazo inoportuno de componentes individuales de la transmisión automática.

Como muestra la práctica, no es tan difícil reparar la computadora y el selector como desmontar el dispositivo. Si no tiene suficientes conocimientos técnicos y experiencia en reparación de automóviles, es mejor abstenerse de desmontar la transmisión automática usted mismo, para que los "maestros" en los sitios web no lo digan.

Cada modelo tiene sus propias particularidades y debilidades. Por tanto, lo mejor es reparar la “caja” y el selector en centros técnicos especializados. durante el diagnóstico por computadora, hay que tener en cuenta que eliminación normal Los códigos de error no pueden resolver el problema porque este procedimiento no elimina la causa del problema.

Después del diagnóstico, la transmisión automática se desmonta y se produce. inspección visual, lavado de contactos del selector, limpieza, lubricación de piezas, sustitución de componentes individuales. Luego, la transmisión automática se ensambla o se reemplaza por una nueva debido a que no es apta para un uso posterior.

Incluso antes de la especificación CSS nivel 2 de 1998, los elementos de formulario ya eran ampliamente compatibles con los principales navegadores. La especificación CSS 2 aún no respondía a la pregunta de cómo se debían presentar los elementos del formulario a los usuarios. Debido a que los elementos del formulario son parte de la interfaz de usuario en cada documento web, los autores de la especificación optaron por dejar representación visual Elementos de formulario HTML predeterminados para cada navegador.

Durante muchos años, la falta de detalles en la especificación sobre los elementos del formulario obligó a los desarrolladores a crear una gran cantidad de pruebas y ejemplos, cuya tarea principal era llevar los componentes visuales de todos los elementos del formulario a la misma apariencia en todos los navegadores. En este artículo, veremos algunas plantillas CSS que le permitirán llevar los elementos de su formulario a un denominador común.

Pruebas de Roger Johansson para diseñar elementos de forma

En 2004, y nuevamente en 2007, Roger Johansson creó conjuntos de pruebas especiales para elementos de formulario y CSS. De estas pruebas hubo una conclusión que molestó a Roger:

Entonces, ¿qué mostró el experimento? Como ya señalé, las pruebas mostraron que con usando CSS No es posible controlar los estilos de formulario para mostrar los elementos del formulario de manera consistente en todos los navegadores y plataformas. Las pruebas también han demostrado que la mayoría de los navegadores ignoran muchas propiedades CSS cuando se utilizan para diseñar elementos de formulario.

A pesar de la innegable verdad de estos hallazgos, los desarrolladores web continúan experimentando con elementos de formulario CSS en busca del Santo Grial, o al menos un compromiso razonable entre la representación predeterminada del navegador y el estilo personalizado.

Modelo de visualización de elementos de formulario predeterminado

De forma predeterminada, la especificación CSS 2.1 para HTML4 establece elementos de formulario como área de texto, entrada y selección en el modo de visualización de bloques en línea:

Área de texto, entrada, selección (pantalla: bloque en línea;)

Y viceversa, elementos de formulario y el conjunto de campos tienen modo de visualización de bloques:

Conjunto de campos, formulario ( mostrar: bloque; )

El modelo de especificación CSS para diseñar elementos en formularios finaliza en este paso. Todos los demás aspectos de la visualización de los elementos del formulario dependen de la hoja de estilo predeterminada del navegador. Sin embargo, las reglas anteriores significan lo siguiente:

  • A los elementos de bloque en línea se les puede aplicar estilo utilizando el contexto de formato en línea. Esto implica utilizar Propiedades CSS, como line-height y vertical-align para controlar la altura del elemento y la alineación vertical. Las propiedades de relleno y margen también se pueden utilizar para controlar el relleno y el relleno de los elementos del formulario. Vale la pena señalar que los elementos de bloque en línea también se pueden controlar utilizando el ancho y el alto; su comportamiento en este sentido no es diferente del de los elementos de bloque ordinarios.
  • Los elementos del bloque se pueden diseñar de forma estándar, utilizando un contexto de formato de bloque normal. Sin embargo, existen problemas con los elementos del formulario de conjunto de campos y leyenda porque dependen completamente del estilo del navegador.

Surge la pregunta, ¿cómo pueden los desarrolladores resolver estos problemas?

Resolver problemas de tamaño de elementos de formulario

Los desarrolladores web pronto se dieron cuenta de que los navegadores trataban los elementos de bloques en línea de forma bastante extraña a la hora de determinar sus tamaños. La determinación de la altura a menudo conduce a resultados inesperados:

Entrada, seleccione (ancho: 120 px; alto: 32 px;)

Los desarrolladores intentaron resolver este problema usando inline-block:

Ingrese, seleccione (ancho: 120 px; alto: 32 px; pantalla: bloque;)

Los resultados todavía dejan mucho que desear con la excepción del elemento de área de texto. Para resolver este problema, primero debe normalizar la fuente y el tamaño de fuente de los elementos del formulario:

Ingrese, seleccione (ancho: 120px; fuente: 1em Arial, sans-serif;)

Una vez instalada la fuente, puedes agregar relleno:

Introduzca, seleccione (ancho: 120 px; fuente: 1 em Arial, sans-serif; relleno: 3 px 6 px;)

A los elementos de entrada y de área de texto también se les puede dar un borde, lo que afectará sus dimensiones de acuerdo con el modelo de caja:

Entrada, entrada, área de texto (borde: 1px sólido #ccc;)

Elementos tipo de entrada El botón y enviar pueden tener relleno adicional agregado por el navegador. Una práctica común es normalizarlos:

Entrada, entrada (relleno: 2px;)

El problema con este enfoque es que los navegadores suelen aplicar prefijos de proveedores a las propiedades de los elementos, por lo que no siempre es posible normalizar el relleno. Por ejemplo, para web-kit puedes normalizarlo así:

Entrada, entrada, entrada, entrada::-botón-de-carga-de-archivo-webkit, botón ( -webkit-box-align: centro; alineación de texto: centro; cursor: predeterminado; color: texto del botón; relleno: 2px 6px 3px; borde : cara del botón inicial de 2px; imagen del borde: inicial; color de fondo: cara del botón; tamaño del cuadro: cuadro del borde; entrada, apariencia del kit web: botón pulsador; espacio en blanco: pre;)

El relleno también afecta a los elementos del conjunto de campos y de la leyenda, pero con resultados diferentes:

  • Configurar el relleno para el conjunto de campos en 0 restablece el relleno predeterminado solo en algunos navegadores (no en IE)
  • Establecer el relleno de la leyenda en 0 hace que el elemento se reduzca

Los elementos de radio seleccionados, casillas de verificación se pueden normalizar con buenos resultados solo para algunas propiedades:

  • Familia de fuentes
  • Tamaño de fuente
  • Ancho (para seleccionar)
  • Relleno

La aplicación de otras propiedades a estos elementos del formulario produce resultados inconsistentes.

Alinear elementos en formularios

Los elementos del formulario se pueden alinear vertical y horizontalmente. Pueden estar ubicados en la misma línea o en grupo. Para alinearlos a lo largo de una línea, puede usar flotante o el contexto de bloque en línea estándar.

Cuando se utilizan elementos flotantes, los elementos se convierten automáticamente en elementos de bloque. Esto significa que el control de estos elementos ahora lo proporcionan nueve reglas más del modelo de caja.

Con elementos flotantes, el principal desafío es lograr una buena alineación vertical en línea actual. En este caso, la práctica habitual es utilizar margen vertical o relleno:

Ingrese, seleccione (ancho: 120 px; flotante: izquierda; margen superior: 0,4 em;)

Este enfoque funciona cuando no es necesario alinear bloques de texto, por ejemplo elemento de etiqueta. En este caso, puedes usar posicionamiento relativo, relleno o margen en un elemento que solo contiene texto:

Otro problema surge con los botones. En este caso, cuando tienes un botón cuyo tamaño es mayor que otros elementos, puedes configurar alineación vertical usando posicionamiento relativo:

Entrada (flotante: izquierda; ancho: 90px; posición: relativa; arriba: 0,4em;)

Este enfoque de posicionamiento relativo también funciona para casillas de verificación y botones de opción. Posicionamiento relativo Incluso se puede utilizar para normalizar el relleno izquierdo de un elemento de leyenda en un conjunto de campos.

Si está utilizando elementos en el contexto del formato en línea, puede usar la propiedad de alineación vertical para la alineación vertical:

Etiqueta, entrada (alineación vertical: medio; margen derecho: 1em;)

Buenos resultados se puede lograr combinando esta propiedad con propiedad de altura de línea. Sin embargo, esta propiedad debe establecerse en el elemento principal. Si lo configura directamente en el elemento del formulario, la altura del elemento se verá afectada:

Formulario-fila (alto de línea: 1,4;)

Usar una declaración de altura para elemento padre emparejado con el mismo valor de altura de línea también es una buena práctica:

Form-row (altura de línea: 1,8; altura: 1,8em;)

En el contexto del formato en línea, puede usar la propiedad text-align en un elemento principal para alinear el contenido de un elemento de formulario a la izquierda, al centro o a la derecha.

Comportamiento extraño de las entradas de archivos

El elemento de entrada de tipo archivo es un caso especial. Un elemento de este tipo siempre debe estar visible y reconocible en la interfaz del navegador por razones de seguridad. Esto significa que los navegadores ignoran deliberadamente algunas reglas de estilo (como las relacionadas con la visibilidad) y, como regla general, aplican sus propios algoritmos definidos por su hoja de estilo predeterminada.

Además, algunos navegadores solo muestran un botón, mientras que otros también agregan un campo para la ruta del archivo.

Sin embargo, los desarrolladores web han encontrado formas de solucionar esta limitación. Primero, envolvieron el elemento en un contenedor.

CSS significa "Hojas de estilo en cascada", que se traduce como "Hojas de estilo en cascada". Se utiliza para diseñar páginas web. Si el código HTML contiene el contenido (lo que mostrará el navegador), entonces el CSS determina su diseño (cómo lo mostrará el navegador). La belleza de CSS es que con la ayuda de un estilo puedes diseñar el mismo tipo de elementos de una página o de un sitio completo (todos los enlaces, párrafos, listas a la vez). Con un estilo CSS, usted define una vez cómo debe verse un elemento en particular, por ejemplo, una imagen, y cambia su diseño en todos los documentos a la vez. Para cambiar el formato del texto en todo su sitio, solo necesita cambiar el código CSS una vez.

Elementos CSS básicos

Así como HTML se compone de etiquetas, atributos y valores, CSS se compone de sus elementos propios. La esencia de las construcciones CSS se puede explicar de la siguiente manera: "Especifique a qué elemento de la página aplicarle estilo y especifique cómo aplicarle estilo". Estos son los componentes básicos de CSS.

  • Selector. Un identificador que le indica al navegador a qué elemento de la página aplicar el diseño. Gracias a ello, el navegador “entiende” que el estilo está destinado, por ejemplo, a diseñar listas o tablas.
  • Bloque de declaración de estilo. Está escrito después del selector y entre llaves. Especifica el estilo del elemento (su diseño). El bloque de declaración de estilo consta de dos partes.
  • Propiedad. Un análogo de un atributo en HTML. Determina qué propiedad de apariencia se cambiará.
  • Significado. Se especifica en una propiedad mediante dos puntos y determina exactamente cómo se cambiará la propiedad.

Puede haber varias propiedades y valores en un bloque de declaración de estilo, en cuyo caso se enumeran separados por un punto y coma.

Tipos de selectores

Dependiendo de las propiedades de los elementos de página que definen, los selectores son de diferentes tipos.

  • Universal. Establece reglas para todos los elementos de la página que no tienen otras reglas establecidas.
    Código * (tamaño de fuente: 14px;) establece el tamaño de fuente en 14 píxeles para todos los elementos del documento para los cuales no se especifican otras reglas mediante otros selectores.
  • Tega. Este tipo de selector especifica reglas de formato para el contenido de una etiqueta HTML específica. El nombre del selector es el mismo que el nombre del descriptor, solo que escrito sin corchetes angulares: pag, h1, ul.
    Por ejemplo, código h2 (color: rojo;) conjuntos verde texto para todos los encabezados de segundo nivel, es decir, el contenido de las etiquetas

    .
  • Atributo. Con este grupo de selectores, puede determinar el estilo del contenido de todas las etiquetas que tienen un atributo específico especificado. Los selectores se pueden especificar con mayor precisión especificando no solo el nombre del atributo, sino también el valor asignado al mismo, así como el nombre de la etiqueta que lo contiene. Esto se puede utilizar para hacer que el diseño sea más individual.
  • clase. Un tipo de selectores para cuando necesitas formatear el contenido de etiquetas del mismo tipo de manera diferente. Por ejemplo, desea que los enlaces en la parte inferior del sitio sean rojos, mientras que todos los demás deben permanecer en azul, como estaban. Para aplicar reglas de clase a un elemento del sitio, debe especificar el nombre de la clase en el atributo clase la etiqueta correspondiente.

Digamos usando la clase. paso elementos individuales debe establecer el margen izquierdo en 15 píxeles.

El código CSS será así:

Paso (margen izquierdo: 15px;)

El código HTML que vinculará el elemento a la regla será:

Texto sangrado

  • IDENTIFICACIÓN. Utilizado junto con el atributo identificación Etiqueta HTML y se utiliza cuando es necesario establecer propiedades para un solo elemento. A diferencia de un selector de clase, cuyo nombre está precedido por un punto, se escribe mediante un hash:

#exclusivo (color:naranja;)

  • Contextual. En HTML, algunas etiquetas suelen aparecer dentro de otras y los selectores contextuales ayudan a definir reglas para ese caso. Utilizándolos, por ejemplo, puede formatear elementos dentro de listas numeradas o texto en cursiva párrafos interiores:

P i (familia finta: Century;)

Los grupos restantes de selectores se basan en una combinación de los tipos enumerados, así como en el principio de herencia, cuando un elemento hijo toma las propiedades de su padre.

Combinar y agrupar selectores resulta conveniente en muchas situaciones. Por ejemplo, para establecer reglas de clase. paso solo para enlaces, necesitas especificar ambos selectores separados por un punto (primero la etiqueta, luego la clase):

A.paso (margen izquierdo: 15px;)

¿Cómo incluir CSS en una página HTML?

Hay varias formas de hacer que las herramientas de creación de sitios web interactúen entre sí. Según el método de adición, los estilos se dividen en las siguientes categorías.

Estilos incorporados

Establecer en el documento directamente dentro de la etiqueta HTML usando el atributo estilo. Tener la máxima prioridad. Esto significa que si se da el mismo elemento diseño diferente, entonces se dará preferencia a la regla que esté escrita dentro de la etiqueta. El selector para el estilo incorporado no es necesario, ya que la conexión entre el estilo y la etiqueta es obvia: en él se especifica el diseño de la etiqueta.

El siguiente código establece el tamaño y el color de fuente para el texto dentro de la etiqueta.

Texto formateado usando un estilo interno.

Estilos globales

Establecer por etiqueta

Estilos relacionados

Lo más conveniente, porque con su ayuda puedes diseñar fácilmente un sitio web completo con el mismo estilo. Estilo relacionado implica que todo el estilo CSS está en un archivo separado con la extensión .css.

Este enfoque también es conveniente porque separa las reglas de diseño de páginas de su contenido, el código CSS se puede cambiar fácilmente sin interferir con los archivos HTML y el principio de separación de códigos es muy importante, especialmente en proyectos grandes.

Para vincular reglas de un archivo CSS a una página HTML, use la etiqueta agregado al contenedor y sus atributos.

Aquí está la línea que vincula las reglas del archivo. miestilo.css con página HTML:

rel="hoja de estilo" especifica que la etiqueta hace referencia a un archivo de hoja de estilo, href="mysyle.css" establece su dirección. Las reglas de direccionamiento son las mismas que para los enlaces normales: la ruta puede ser absoluta, relativa, etc.

Estilos importados

Usando el comando @importar puede agregar estilos desde un archivo CSS a la tabla actual. Esto puede ser necesario, por ejemplo, si desea complementar el diseño del documento individual especificado utilizando estilos globales, reglas universales de archivo separado. El método no se puede utilizar con estilos en línea.

El siguiente código importa una tabla de archivos al documento. cualquier.css, que se encuentra en la carpeta con el documento HTML editado:

@importar URL (cualquier.css);

El comando está escrito en la línea debajo de la etiqueta de apertura.

CSS (Cascading Style Sheets), u hojas de estilos en cascada, se utilizan para describir apariencia documento escrito en lenguaje de marcado. Normalmente, los estilos CSS se utilizan para crear y cambiar el estilo de los elementos de la página web y interfaces de usuario escrito en lenguajes HTML y XHTML, pero también se puede aplicar a cualquier tipo de documento XML, incluidos XML, SVG y XUL.

Las hojas de estilo en cascada describen reglas para formatear elementos usando propiedades y valores aceptables estas propiedades. Para cada elemento, puede utilizar un conjunto limitado de propiedades; otras propiedades no tendrán ningún efecto sobre él.

Una declaración de estilo consta de dos partes: el elemento de la página web: selector y comandos de formato - bloque de anuncios. El selector le dice al navegador qué elemento formatear, y el bloque de declaración (código entre llaves) enumera los comandos de formato: propiedades y sus valores.


Arroz. 1. Estructura de declaración de estilo CSS

Tipos de hojas de estilo en cascada y sus particularidades

1. Tipos de hojas de estilo

1.1. Hoja de estilo externa

Hoja de estilo externa representa archivo de texto con la extensión .css, que contiene un conjunto de estilos CSS para elementos. El archivo se crea en un editor de código, como una página HTML. El archivo sólo puede contener estilos, sin formato HTML. Una hoja de estilo externa está conectada a una página web mediante una etiqueta. , ubicado dentro de la sección . Estos estilos funcionan para todas las páginas del sitio.

Puede adjuntar varias hojas de estilo a cada página web agregando varias etiquetas en secuencia , indicando el propósito de esta hoja de estilo en el atributo de etiqueta de medios. rel="stylesheet" especifica el tipo de enlace (enlace a una hoja de estilo).

El estándar HTML5 no requiere el atributo type="text/css", por lo que se puede omitir. Si falta el atributo, el valor predeterminado es type="text/css" .

1.2. Estilos internos

Estilos internos incrustado en una sección Documento HTML y se definen dentro de la etiqueta.. Los estilos internos tienen prioridad sobre los externos, pero son inferiores a los estilos en línea (especificados mediante el atributo de estilo).

...

1.3. Estilos incorporados

cuando escribimos estilos en línea, escribimos el código CSS en el archivo HTML, directamente dentro de la etiqueta del elemento usando el atributo de estilo:

Presta atención a este texto.

Estos estilos sólo afectan al elemento para el que están configurados.

1.4. @regla de importación

@regla de importación Le permite cargar hojas de estilo externas. Para que la directiva @import funcione, debe aparecer en la hoja de estilo (externa o interna) antes que todas las demás reglas:

La regla @import también se utiliza para incluir fuentes web:

@importar URL(https://fonts.googleapis.com/css?family=Open+Sans&subset=latin,cyrillic);

2. Tipos de selectores

Selectores Representar la estructura de una página web. Ayudan a crear reglas para dar formato a los elementos de la página web. Los selectores pueden ser elementos, sus clases e identificadores, así como pseudoclases y pseudoelementos.

2.1. Selector universal

Coincide con cualquier elemento HTML. Por ejemplo, * (margen: 0;) se restablecerá a cero márgenes para todos los elementos del sitio. El selector también se puede utilizar en combinación con una pseudoclase o pseudoelemento: *:after (estilos CSS), *:checked (estilos CSS).

2.2. Selector de elementos

Los selectores de elementos le permiten formatear todos los elementos. de este tipo en todas las páginas del sitio. Por ejemplo, h1 (familia de fuentes: Lobster, cursiva;) establecerá el estilo de formato general para todos los títulos h1.

2.3. selector de clase

Los selectores de clases le permiten diseñar uno o más elementos con el mismo nombre de clase colocado en diferentes lugares páginas o en diferentes páginas del sitio. Por ejemplo, para crear un título con la clase de título, debe agregar el atributo de clase con el valor del título a la etiqueta de apertura.

y establecer el estilo para clase especificada. Los estilos creados usando una clase se pueden aplicar a otros elementos, no necesariamente de ese tipo.

Instrucciones de uso ordenador personal

.headline (transformación de texto: mayúsculas; color: azul claro;)

2.4. selector de identificación

El selector de ID le permite formatear uno elemento específico. La identificación debe ser única y solo puede aparecer una vez en una página.

#barra lateral (ancho: 300 px; flotante: izquierda;)

2.5. Selector de descendientes

Los selectores descendientes aplican estilos a elementos dentro de un elemento contenedor. Por ejemplo, ul li (transformación de texto: mayúsculas;): seleccionará todos los elementos li que sean hijos de todos los elementos ul.

Si necesita formatear descendientes elemento específico, a este elemento se le debe dar una clase de estilo:

p.first a (color: verde;) — este estilo se aplicará a todos los enlaces que sean descendientes de un párrafo con clase primero;

p .first a (color: verde;) - si agrega un espacio, se diseñarán los enlaces ubicados dentro de cualquier etiqueta .first class que sea descendiente del elemento

Primero a (color: verde;): este estilo se aplicará a cualquier enlace ubicado dentro de otro elemento, designado por la clase.first.

2.6. Selector de niños

Un elemento hijo es hijo directo de su elemento contenedor. Un elemento puede tener varios elementos secundarios, pero cada elemento solo puede tener un elemento principal. El selector secundario le permite aplicar estilos solo si el elemento secundario viene inmediatamente después del elemento principal y no hay otros elementos entre ellos, es decir, el elemento secundario no está anidado dentro de nada más.
Por ejemplo, p > strong seleccionará todos los elementos fuertes que sean hijos del elemento p.

2.7. Selector de hermanas

La hermandad ocurre entre elementos que comparten un padre común. Selectores elementos hermanos Le permite seleccionar elementos de un grupo de elementos del mismo nivel.

h1 + p: seleccionará todos los primeros párrafos inmediatamente después de cualquier etiqueta

sin afectar los restantes párrafos;

h1 ~ p: seleccionará todos los párrafos que sean hermanos de cualquier título h1 e inmediatamente después de él.

2.8. selector de atributos

Los selectores de atributos seleccionan elementos según el nombre del atributo o el valor del atributo:

[atributo] - todos los elementos que contienen el atributo especificado - todos los elementos para los que se especifica el atributo alt;

selector[atributo] - elementos de este tipo que contienen el atributo especificado, img - sólo imágenes para las que se especifica el atributo alt;

selector[atributo="valor"] - elementos de este tipo que contienen el atributo especificado con un valor específico, img - todas las imágenes cuyo título contiene la palabra flor;

selector[atributo~="valor"] - elementos que contienen parcialmente valor dado, por ejemplo, si se especifican varias clases para un elemento separadas por un espacio, p - párrafos cuyo nombre de clase contiene característica ;

selector[atributo|="valor"] - elementos cuya lista de valores de atributos comienza con la palabra especificada, p - párrafos cuyo nombre de clase es característica o comienza con característica;

selector[atributo^="valor"] - elementos cuyo valor de atributo comienza con el valor especificado, a - todos los enlaces que comienzan con http://;

selector[atributo$="valor"] - elementos cuyo valor de atributo termina valor especificado, img: todas las imágenes en formato png;

selector[atributo*="valor"] - elementos cuyo valor de atributo contiene cualquier lugar palabra especificada, a: todos los enlaces cuyo nombre contiene libro.

2.9. Selector de pseudoclase

Las pseudoclases son clases que en realidad no están adjuntas a etiquetas HTML. Le permiten aplicar reglas CSS a elementos cuando ocurre un evento u obedece a una regla específica. Las pseudoclases caracterizan elementos con las siguientes propiedades:

:hover: cualquier elemento sobre el cual se coloca el cursor del mouse;

:enfocar - elemento interactivo, al que se accedía mediante el teclado o se activaba mediante el ratón;

:active - elemento que fue activado por el usuario;

:válido: campos de formulario cuyo contenido se ha comprobado en el navegador para comprobar que cumple con el tipo de datos especificado;

:invalid — campos de formulario cuyo contenido no coincide con el tipo de datos especificado;

:habilitado: todos los campos del formulario activos;

:disabled — campos de formulario bloqueados, es decir, en estado inactivo;

:in-range: campos de formulario cuyos valores están en el rango especificado;

:fuera de rango: campos de formulario cuyos valores no están dentro del rango especificado;

:lang() - elementos con texto en el idioma especificado;

:not(selector) - elementos que no contienen el selector especificado - clase, identificador, nombre o tipo de campo de formulario - :not() ;

:objetivo es un elemento con el símbolo # al que se hace referencia en el documento;

:marcado: elementos de formulario seleccionados (seleccionados por el usuario).

2.10. Selector de pseudoclase estructural

Las pseudoclases estructurales seleccionan elementos secundarios según el parámetro especificado entre paréntesis:

:nth-child(impar) - elementos secundarios impares;

:nth-child(even) - elementos hijos pares;

:nth-child(3n) - cada tercer elemento entre los niños;

:nth-child(3n+2) - selecciona cada tercer elemento, comenzando con el segundo hijo (+2);

:nth-child(n+2) - selecciona todos los elementos a partir del segundo;

:nth-child(3) - selecciona el tercer elemento secundario;

:nth-last-child() - en la lista de elementos secundarios, selecciona el elemento con ubicación especificada, similar a:nth-child() , pero empezando por el último, en dirección opuesta;

:first-child: le permite aplicar estilo solo al primer elemento secundario de la etiqueta;

:last-child: le permite formatear el último elemento secundario de la etiqueta;

:only-child: selecciona un elemento que es el único elemento secundario;

:empty: selecciona elementos que no tienen hijos;

:root: selecciona el elemento que es la raíz del documento: el elemento html.

2.11. Selector de pseudoclase de tipo estructural

Indica un tipo específico de etiqueta secundaria:

:nth-of-type() - selecciona elementos similares a :nth-child() , pero solo tiene en cuenta el tipo de elemento;

:primero de tipo: selecciona el primer hijo de un tipo determinado;

:último de tipo - selecciona último elemento de este tipo;

:nth-last-of-type() - selecciona un elemento del tipo dado en una lista de elementos según la ubicación especificada, comenzando desde el final;

:only-of-type: selecciona el único elemento del tipo especificado entre los elementos secundarios del elemento principal.

2.12. Selector de pseudoelementos

Los pseudoelementos se utilizan para agregar contenido, que se genera utilizando la propiedad de contenido:

:primera letra: selecciona la primera letra de cada párrafo, se aplica solo a elementos de bloque;

:primera línea: selecciona la primera línea del texto del elemento, se aplica solo a elementos de bloque;

:antes: inserta el contenido generado antes del elemento;

:after: agrega contenido generado después del elemento.

3. Combinación de selectores

Para seleccionar elementos para formatear con mayor precisión, puede utilizar combinaciones de selectores:

img:nth-of-type(even) - seleccionará todas las imágenes pares, texto alternativo que contiene palabra css.

4. Selectores de agrupación

Se puede aplicar el mismo estilo a varios elementos al mismo tiempo. Para hacer esto, debe enumerar los selectores requeridos en el lado izquierdo de la declaración, separados por comas:

H1, h2, p, span ( color: tomate; fondo: blanco; )

5. Herencia y cascada

Herencia y cascada son dos conceptos fundamentales en CSS que están estrechamente relacionados. La herencia es donde los elementos heredan propiedades de su padre (el elemento que las contiene). La cascada se manifiesta en cómo diferentes tipos se aplican hojas de estilo a un documento y cómo las reglas en conflicto se anulan entre sí.

5.1. Herencia

Herencia Es el mecanismo por el cual ciertas propiedades se transmiten de un antepasado a sus descendientes. La especificación CSS proporciona la herencia de propiedades relacionadas con el contenido de texto de la página, como color, fuente, espacio entre letras, altura de línea, estilo de lista, alineación de texto, sangría de texto, transformación de texto, visibilidad, blanco. -espacio y espaciado entre palabras. En muchos casos, esto es conveniente porque no es necesario configurar el tamaño y la familia de fuentes para cada elemento de la página web.

Las propiedades relacionadas con el formato de bloque no se heredan. Estos son fondo, borde, visualización, flotante y claro, alto y ancho, margen, mínimo-máximo-alto y ancho, contorno, desbordamiento, relleno, posición, decoración de texto, alineación vertical e índice z.

herencia forzada

Al usar palabra clave heredar puede forzar a un elemento a heredar cualquier valor de propiedad de su elemento padre. Esto funciona incluso para propiedades que no se heredan de forma predeterminada.

Cómo se configuran y funcionan los estilos CSS

1) Los estilos se pueden heredar del elemento principal (propiedades heredadas o utilizando el valor heredado);

2) Los estilos ubicados en la hoja de estilos a continuación anulan los estilos ubicados en la tabla anterior;

3) Se pueden aplicar estilos de un elemento. diferentes fuentes. Puede comprobar qué estilos se aplican en el modo de desarrollador del navegador. Para hacer esto, haga clic en el elemento. clic derecho mouse y seleccione “Ver código” (o algo similar). La columna de la derecha enumerará todas las propiedades establecidas en este elemento o heredadas de un elemento principal, junto con los archivos de estilo en los que se especifican y la línea ordinal de código.


Arroz. 2. Modo desarrollador en el navegador Google Chrome

4) Al definir un estilo, puede utilizar cualquier combinación de selectores: un selector de elemento, una pseudoclase de elemento, una clase o un identificador de elemento.

div (borde: 1px sólido #eee;) #wrap (ancho: 500px;).box (flotante: izquierda;).clear (claro: ambos;)

5.2. Cascada

en cascada es un mecanismo que controla el resultado final en una situación en la que se aplican diferentes reglas CSS al mismo elemento. Hay tres criterios que determinan el orden en que se aplican las propiedades: la regla importante, la especificidad y el orden en que se incluyen las hojas de estilo.

¡Regla!importante

El peso de una regla se puede especificar usando la palabra clave!important, que se agrega inmediatamente después del valor de la propiedad, por ejemplo, span (font-weight: negrita!important;) . La regla debe colocarse al final de la declaración antes del paréntesis de cierre, sin espacio. Dicho anuncio tendrá prioridad sobre todas las demás normas. Esta regla le permite cancelar un valor de propiedad y establecer uno nuevo para un elemento de un grupo de elementos en el caso de que no haya acceso directo al archivo de estilo.

Especificidad

Para cada regla, el navegador calcula especificidad del selector, y si un elemento tiene declaraciones de propiedad contradictorias, se tiene en cuenta la regla que tenga mayor especificidad. El valor de especificidad tiene cuatro partes: 0, 0, 0, 0. La especificidad del selector se define de la siguiente manera:

para id, se agrega 0, 1, 0, 0;
para la clase 0, se añade 0, 1, 0;
para cada elemento y pseudoelemento se suma 0, 0, 0, 1;
para un estilo en línea agregado directamente a un elemento: 1, 0, 0, 0;
Un selector universal no tiene especificidad.

H1 (color: azul claro;) /*especificidad 0, 0, 0, 1*/ em (color: plata;) /*especificidad 0, 0, 0, 1*/ h1 em (color: dorado;) /*especificidad: 0, 0, 0, 1 + 0, 0, 0, 1 = 0, 0, 0, 2*/ div#main p.about (color: azul;) /*especificidad: 0, 0, 0, 1 + 0 , 1, 0, 0 + 0, 0, 0, 1 + 0, 0, 1, 0 = 0, 1, 1, 2*/ .sidebar (color: gris;) /*especificidad 0, 0, 1, 0 */ #sidebar (color: naranja;) /*especificidad 0, 1, 0, 0*/ li#sidebar (color: aqua;) /*especificidad: 0, 0, 0, 1 + 0, 1, 0, 0 = 0, 1, 0, 1*/

Como resultado, se aplicarán al elemento aquellas reglas que sean más específicas. Por ejemplo, si un elemento tiene dos especificidades con valores 0, 0, 0, 2 y 0, 1, 0, 1, entonces ganará la segunda regla.

Orden de tablas conectadas

Puede crear varias hojas de estilo externas y conectarlas a una página web. si en diferentes mesas se reunirá diferentes significados propiedades de un elemento, entonces, como resultado, se aplicará al elemento la regla de la hoja de estilos que se enumera a continuación.




Arriba