Tutorial CSS

CSS INICIO Introducción a CSS Sintaxis CSS Selectores de CSS CSS Cómo Comentarios CSS Colores CSS Fondos CSS Bordes CSS Márgenes CSS Relleno CSS Altura/ancho de CSS Modelo de caja CSS Esquema CSS Texto CSS Fuentes CSS Iconos CSS Enlaces CSS Listas CSS Tablas CSS Pantalla CSS Ancho máximo de CSS Posición de CSS Índice Z de CSS Desbordamiento de CSS CSS flotante Bloque en línea CSS Alinear CSS Combinadores de CSS Pseudo-clase CSS Pseudoelemento CSS Opacidad CSS Barra de navegación CSS Menús desplegables de CSS Galería de imágenes CSS Sprites de imagen CSS Selectores de atributos CSS Formularios CSS Contadores CSS Diseño del sitio web CSS Unidades CSS Especificidad CSS CSS !importante Funciones matemáticas CSS

CSS Avanzado

Esquinas redondeadas CSS Imágenes de borde CSS Fondos CSS Colores CSS Palabras clave de color CSS Gradientes CSS Sombras CSS Efectos de texto CSS Fuentes web CSS Transformaciones CSS 2D Transformaciones CSS 3D Transiciones CSS Animaciones CSS Información sobre herramientas de CSS Imágenes de estilo CSS Reflejo de imagen CSS Ajuste de objeto CSS Posición del objeto CSS Enmascaramiento CSS Botones CSS Paginación CSS Columnas múltiples de CSS Interfaz de usuario de CSS Variables CSS Tamaño del cuadro CSS Consultas de medios CSS Ejemplos de CSS MQ Caja flexible de CSS

Responsivo CSS

Introducción a la tracción trasera Vista de RWD Vista de cuadrícula RWD Consultas de medios RWD Imágenes de RWD Vídeos de RWD Marcos RWD Plantillas RWD

Cuadrícula CSS

Introducción a la cuadrícula Contenedor de rejilla Elemento de cuadrícula

CSS SASS

Tutorial de SASS

Ejemplos de CSS

Plantillas CSS Ejemplos de CSS prueba css Ejercicios CSS Certificado CSS

Referencias CSS

Referencia CSS Selectores de CSS Funciones CSS CSS Referencia Aural Fuentes web seguras CSS CSS Animable Unidades CSS Convertidor CSS PX-EM Colores CSS Valores de color CSS Valores predeterminados de CSS Compatibilidad con navegador CSS

Especificidad CSS


¿Qué es la especificidad?

Si hay dos o más reglas CSS que apuntan al mismo elemento, el selector con el valor de especificidad más alto "ganará" y su declaración de estilo se aplicará a ese elemento HTML.

Piense en la especificidad como una puntuación/rango que determina qué declaración de estilo se aplica en última instancia a un elemento.

Mira los siguientes ejemplos:

Ejemplo 1

En este ejemplo, hemos utilizado el elemento "p" como selector y hemos especificado un color rojo para este elemento. El texto será rojo:

<html>
<head>
  <style>
    p {color: red;}
  </style>
</head>
<body>

<p>Hello World!</p>

</body>
</html>

Ahora, mira el ejemplo 2:

Ejemplo 2

En este ejemplo, agregamos un selector de clase (llamado "prueba") y especificamos un color verde para esta clase. El texto ahora será verde (aunque hemos especificado un color rojo para el selector de elementos "p". Esto se debe a que el selector de clase tiene mayor prioridad:

<html>
<head>
  <style>
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p class="test">Hello World!</p>

</body>
</html>

Ahora, mira el ejemplo 3:

Ejemplo 3

En este ejemplo, hemos agregado el selector de ID (llamado "demo"). El texto ahora será azul, porque el selector de id tiene mayor prioridad:

<html>
<head>
  <style>
    #demo {color: blue;}
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p id="demo" class="test">Hello World!</p>

</body>
</html>

Ahora, mira el ejemplo 4:

Ejemplo 4

En este ejemplo, hemos agregado un estilo en línea para el elemento "p". El texto ahora será rosa, porque el estilo en línea tiene la máxima prioridad:

<html>
<head>
  <style>
    #demo {color: blue;}
    .test {color: green;}
    p {color: red;}
  </style>
</head>
<body>

<p id="demo" class="test" style="color: pink;">Hello World!</p>

</body>
</html>


Jerarquía de especificidad

Cada selector de CSS tiene su lugar en la jerarquía de especificidad.

Hay cuatro categorías que definen el nivel de especificidad de un selector:

  • Estilos en línea - Ejemplo: <h1 style="color: pink;">
  • ID - Ejemplo: #navbar
  • Clases, pseudoclases, selectores de atributos - Ejemplo: .test, :hover, [href]
  • Elementos y pseudo-elementos - Ejemplo: h1, :before

¿Cómo calcular la especificidad?

¡Memoriza cómo calcular la especificidad!

Comience en 0, agregue 100 para cada valor de ID, agregue 10 para cada valor de clase (o selector de pseudoclase o atributo), agregue 1 para cada selector de elemento o pseudoelemento.

Nota: El estilo en línea obtiene un valor de especificidad de 1000, ¡y siempre se le da la prioridad más alta!

Nota 2: hay una excepción a esta regla: si usa la !important regla, ¡incluso anulará los estilos en línea!

La siguiente tabla muestra algunos ejemplos de cómo calcular los valores de especificidad:

Selector Specificity Value Calculation
p 1 1
p.test 11 1 + 10
p#demo 101 1 + 100
<p style="color: pink;"> 1000 1000
#demo 100 100
.test 10 10
p.test1.test2 21 1 + 10 + 10
#navbar p#demo 201 100 + 1 + 100
* 0 0 (the universal selector is ignored)

¡El selector con el valor de especificidad más alto ganará y entrará en vigor!

Considere estos tres fragmentos de código:

Ejemplo

A: h1
B: h1#content
C: <h1 id="content" style="color: pink;">Heading</h1>

La especificidad de A es 1 (selector de un elemento)
La especificidad de B es 101 (una referencia de ID + un selector de elemento)
La especificidad de C es 1000 (estilo en línea)

Dado que la tercera regla (C) tiene el valor de especificidad más alto (1000), se aplicará esta declaración de estilo.



Más ejemplos de reglas de especificidad

Especificidad igual: gana la regla más reciente : si la misma regla se escribe dos veces en la hoja de estilo externa, entonces gana la regla más reciente:

Ejemplo

h1 {background-color: yellow;}
h1 {background-color: red;}


Los selectores de ID tienen una mayor especificidad que los selectores de atributos . Mire las siguientes tres líneas de código:

Ejemplo

div#a {background-color: green;}
#a {background-color: yellow;}
div[id=a] {background-color: blue;}

la primera regla es más específica que las otras dos y, por lo tanto, se aplicará.


Los selectores contextuales son más específicos que un selector de un solo elemento: la hoja de estilo incrustada está más cerca del elemento al que se va a aplicar estilo. Entonces en la siguiente situación

Ejemplo

From external CSS file:
#content h1 {background-color: red;}

In HTML file:
<style>
#content h1 {background-color: yellow;}
</style>

se aplicará esta última regla.


Un selector de clase supera a cualquier número de selectores de elementos : un selector de clase como .intro supera a h1, p, div, etc.:

Ejemplo

.intro {background-color: yellow;}
h1 {background-color: red;}


El selector universal (*) y los valores heredados tienen una especificidad de 0 - ¡El selector universal (*) y los valores heredados se ignoran!