52
loading...
This website collects cookies to deliver better user experience
!important
a tus estilos CSS, pero esto hace que tu CSS se descontrole rápidamente.La especificidad es la manera mediante la cual los navegadores deciden qué valores de una propiedad CSS son más relevantes para un elemento y, por lo tanto, serán aplicados
* {
box-sizing: border-box;
}
box-sizing: border-box
a todos los elementos. Si quieres saber más sobre esta propiedad, te invito a leer mi articulo completo⤵️<p>Lupita Code</p>
* {
font-size: 1rem;
}
p {
font-size: 3rem;
}
<p>
?<p>
) tiene un peso de 0-0-0-1, al ser un valor mayor que el anterior, su peso es mayor y CSS entiende que su especificidad también es mayor y gana sobre el anterior selector a pesar de estar declarado en primer lugar en la hoja de estilos.<p>
, <div>
,<main>
etc.<header>
<h1><span>Welcome</span> to my youtube channel</h1>
</header>
header h1 span {
text-transform: lowercase;
}
span {
text-transform:uppercase;
}
<span>
solamente tiene un peso de 0-0-0-1 pero también tenemos en la primera regla 3 etiquetas HTML que tienen un peso total de 0-0-0-3, ¿Por que 3? 🤔 la respuesta es que el 3 es la cantidad de elementos HTML declarados, por lo que todo el texto estará en minúsculas a pesar de que el <span>
tenga mayúscula.title
en la etiqueta <span>
:<header>
<h1><span class="title">Welcome</span> to my youtube channel</h1>
</header>
header h1 span {
text-transform: lowercase;
}
.title {
text-transform:uppercase;
}
<span>
si estará en mayúscula y todo lo demás estará en minúscula, esto sucede porque las clases tienen un peso de 0-0-1-0 mientras que el selector de 3 elementos será de 0-0-0-3.<header id="header" class="header"> Lupita Code </header>
#header {
background-color: rebeccapurple;
.header {
background-color: khaki;
}
<header>
es el color rebeccapurple
ya que el id tiene un valor de 0-1-0-0, mientras que la clase tiene un valor de 0-0-1-0. <style>
, por lo que se puede decir que tienen la mayor especificidad. Los estilos en línea no tienen selector porque se aplican directamente al elemento al que se dirigen.<li>
<a href="/specials" class="featured"
style="background-color: orange;">
Specials
</a>
</li>
!important
a la declaración de la hoja de estilos externa. Si los estilos en línea están marcados como !important
, entonces nada puede anularlos. !important
es solo para casos desesperados y NO se recomienda usarlo ya que si comienzas a agregar !important
en varios lugares de tus hojas de estilos te será más complicado debuggear o reescribir algún elemento. Aunque existen ciertos casos especiales en los que si puedes usarlo pero si eres principiante recomiendo NO utilizar !important
a menos que sepas lo que estas haciendo. !important
gana a todos, es decir le gana a la especificidad.!important
en una declaración de estilo, esta declaración reescribirá cualquier estilo antes aplicado, esta palabra clave para el navegador es de prioridad muy alta. Aunque técnicamente !important
no tiene nada que ver con especificidad, interactúa directamente con esta. !important
no se considera una mala práctica.:not()
no tienen efecto sobre la especificidad. (Sin embargo, los selectores declarados dentro de :not()
si lo tienen). Por ejemplo:
div.outer p {
color:orange;
}
div:not(.outer) p {
color: lime;
}
<div class="outer">
<p>Esto está en el outer div.</p>
<div class="inner">
<p>Este texto está en el inner div.</p>
</div>
</div>
:not()
no es considerada una pseudo-clase para el cálculo de la especificidad. Pero los selectores colocados dentro de ella en este ejemplo la clase .outer
, si cuentan en la especificidad.body #content .data img:hover{}
) el navegador contará el número de ids, pseudo-clases y pseudo-elementos y asignará un valor de especificidad a la regla, para compararla con las demás y decidir cuál usar. Por ejemplo: