CSS Nivel 4 selectores a tener en cuenta

Ya es hora de que empecemos a aprender algo de CSS nuevo, ¿no es así??

Todos estamos acostumbrados a las nuevas funciones que se introducen en los marcos izquierdo y derecho, pero a menudo olvidamos que las nuevas funciones se desarrollan constantemente en los lenguajes web principales que utilizamos todos los días..

Borrador del Editor del W3C

El borrador del Nivel 4 de los selectores de CSS del 15 de enero describe un salto importante en las características de CSS.

Antes de comenzar, debe saber: el CSS que encuentra en este artículo, hoy, no funcionará en gran medida en ningún navegador. Incluso lo más nuevo de lo nuevo. La razón de esto es que el borrador es exactamente eso: un borrador. Esta es la cuarta versión del borrador de los selectores de nivel 4, que comenzó en 2011. Los selectores sugeridos en el borrador son una especificación para los nuevos selectores que están siendo sugeridos por los editores del propio documento, a través de mucha deliberación y colaboración con personas de la comunidad que participan en la lista de correo del W3C.

Entonces, ¿qué significa esto? Significa que en un futuro relativamente cercano, es probable que veamos muchas de estas funciones implementadas, y muchas se entregarán en versiones de desarrollo de navegadores como Chrome y Firefox..

Veamos algunos de los nuevos selectores.!

1.: no (.warning, .alert)

Hemos visto el :no Selector anterior en los selectores de nivel 3. Sin embargo, el borrador actual del nivel 4 :no selector permite múltiples argumentos con una coincidencia más compleja.

Previamente, :no solo se podía usar con un solo selector y no se podía combinar. Por ejemplo, nivel 3. :no podría verse así:

a: no ([href * = "somesite.com"]) 

Esto elegiría todas las etiquetas de anclaje que no tenían una href incluyendo la cuerda "somesite.com". Pero con el nuevo borrador, podemos hacer cosas más interesantes..

Nosotros cubriremos :tiene en breve, pero por ahora, aquí hay un selector que selecciona todos los enlaces que no son descendientes directos de elementos con una clase de columna o una clase que comienza con columna (como las clases de rejilla de Bootstrap col-md-4). También ignorará los anclajes que tengan elementos img como descendientes..

a: no ([clase | = "col"]> a,: tiene (img)) 

Este selector también nos permite hacer cosas como:

div: no (div + div) 

Esto selecciona todos los divs que no son hermanos de la siguiente línea de otros divs.

Tomándolo aún más lejos

Con la adición de la : nth-last-child pseudo-clase también podemos hacer cosas como esta:

div: not (.container> div: nth-last-child (-n + 2)) 

Esto seleccionaría todos los divs excepto aquellos que son descendientes directos de .envase elementos y son los dos últimos hermanos.

Como puede ver, estas reglas pueden ser muy poderosas y complejas; Pero vamos a agregar aún más flexibilidad en la mezcla mediante la introducción de la :tiene pseudo selector.

2.: tiene (div, p,> a)

los :tiene el pseudo-selector le permite seleccionar elementos que tienen los argumentos pasados ​​como hijos. Por ejemplo, para seleccionar todos los enlaces de anclaje que tienen elementos de imagen como hijos, usaría la siguiente sintaxis:

a: tiene (img) 

sin embargo, :tiene no se limita a los selectores simples. Puedes combinar :tiene con :no y : nth- * Selectores para crear selectores relacionales bastante complejos..

Por ejemplo, seleccionemos mesa Elementos que tienen más de diez filas:

tabla: has (tr: nth-of-type (11)) 

Combinación de: tiene () y: no ()

¿Qué hay de seleccionar un cuerpo elemento cuyo último elemento hijo no es un pie de página?

cuerpo: no (: tiene (pie de página: último hijo)) 

3.: cualquier enlace

Actualmente podemos apuntar hipervínculos utilizando :enlazar y :visitó. Esto va más allá de simplemente usar el una selector, ya que verifica la presencia de href, y verifica el historial de navegación del usuario para determinar si un enlace dado ha sido visitado.

: enlace,: visitó color: azul;  

Con los selectores de nivel 4 propuestos podríamos diseñar todos los enlaces, visitados o no, usando : cualquier enlace. El estilo anterior es relativamente equivalente a:

: cualquier-enlace color: azul;  

4.: ámbito

Hasta los selectores de nivel 4, CSS ha recibido un global alcance. En otras palabras, si agrega el siguiente CSS:

div color: # 444;  

todos los divs recibirán el color: # 444 regla de estilo (Esto supone que no se aplican otros estilos de competencia). Los selectores de nivel 4 permiten que las hojas de estilo y las etiquetas de estilo se con alcance a un elemento:

Esto está fuera del alcance.

En este ejemplo, hemos aplicado un alcance a una etiqueta de estilo dentro de la aparte elemento. Las reglas de esta etiqueta de estilo solo se aplicarán a los descendientes de estiloel elemento padre.

5.: coincidencias (selector1, selector2)

los :partidos El pseudo selector nos permite verificar si un elemento coincide con una lista de elementos. Por ejemplo, si desea apuntar a todas las etiquetas de anclaje, párrafo y h2 dentro de un artículo, podría lograrlo con lo siguiente:

artículo: coincidencias (h2, a, p) 

Esto reemplaza la sintaxis mucho más detallada anteriormente:

artículo a, artículo h2, artículo p 

Nota: A partir de esta versión del borrador., :partidos() no puede ser usado con :no, :tiene, u otro anidado :partidos.

6. Selector de Descendente Explícito >>

Probablemente esté familiarizado con el carácter de espacio que nos permite escribir reglas descendentes, como todos los anclajes dentro de un div:

div a 

Pero hasta ahora no hemos visto un selector descendiente explícito. Con selectores de nivel 4 tenemos uno: >>.

Sin embargo, tenga en cuenta que esto resulta en un carácter adicional innecesario en su CSS, ya que puede lograr el mismo efecto con un solo espacio de caracteres, así que tenga cuidado de cómo lo usa. Presumiblemente actúa como un puente entre el selector de niño inmediato, >, y el selector de acceso a la sombra, >>>.

7. Tabla en el selector de columnas ||

Este selector es una adición bienvenida para el estilo de tabla. Veamos algunas marcas para una tabla básica:

CARNÉ DE IDENTIDAD Nombre Email

El diseño de elementos agrupados horizontalmente (es decir, dentro de la misma fila) ha sido históricamente relativamente sencillo de lograr. Elementos de estilo agrupados. verticalmente es un juego de pelota completamente diferente.

Para estilizar todos los elementos que forman parte de la columna con la clase. información personal, podríamos agregar más clases al marcado y diseñarlas directamente, o, mirando hacia los selectores de nivel 4, podríamos usar el || selector. los || selector le permite dirigirse limpiamente a los td Elementos de la siguiente manera:

.información personal || td 

Conclusión

¡Eso envuelve nuestra descripción general de algunas de las nuevas características que vienen en los selectores de nivel 4! Estas nuevas y poderosas herramientas de ahorro de bytes no están totalmente bloqueadas en su lugar, pero los navegadores están comenzando a implementarlas en sus formas experimentales iniciales, así que busque actualizaciones de la especificación. Por supuesto, cuando se formalicen, los cubriremos aquí en Tuts+!

Enlaces relevantes

Echa un vistazo a nuestro curso sobre El CSS del futuro, donde Craig Campbell cubre, entre otras cosas:

  • El proceso de estandarización
  • Combinando: tiene y: no
  • Selección eficiente con: partidos
  • Seleccionando: Elementos en blanco
  • El diseño de cuadrícula
  • Estilos de ámbito
  • Modos de mezcla
  • Variables CSS