Juan Esteban Henao Uribe
En Vscode podemos ver la especificidad de nuestros elementos colocando el cursor sobre el nombre del selector.
Enrique López
Muy buen dato
Reynaldo Fuentes Garcia
Gracias por el dato.
En algún punto, cuando estés creando una página web, te encontrarás con problemas con los estilos, por ejemplo:
Probablemente, sea un inconveniente de cascada o especificidad.
Qué es la cascada en CSS
La cascada es el concepto que determina qué estilos se colocan sobre otros, priorizando a aquellos que se encuentren más abajo del código. Recordarás que CSS es la abreviación de Cascade Style Sheets, que traducido es hojas de estilos en Cascada.
Mira el siguiente código e identifica de qué color de letra tendrá la etiqueta <h1>.
h1 { color: red; } h1 { color: blue; }
La etiqueta <h1> tendrá un color blue de letra, esto porque está situado más abajo en el código. Esto ocurre con cada propiedad de CSS que se repita en algún punto más arriba del código.
Sin embargo, esto ocurre cuando la especificidad de una regla CSS tiene el mismo valor. Pero, ¿qué es especificidad?
Qué es especificidad en CSS
La especificidad consiste en dar un valor a una regla CSS sobre qué tan específico es el estilo, esto para que los navegadores puedan saber qué estilos aplicar sobre otros, independientemente de dónde se encuentren en el código. El estilo se aplicará donde la especificidad sea mayor.
Tipos de especificidad en CSS
Existen 6 tipos de especificidad con su respectivo valor, donde X es la cantidad de estilos que lo contienen. Mira la siguiente imagen:
Valor con mayor especificidad
La palabra reservada !important es un valor de toda propiedad CSS que provee una especificidad de 10000, por lo que se aplicará ante otros estilos. Esto es una mala práctica y no deberías utilizarlo.
h1 { color: red !important; }
Estilos en línea
Los estilos en línea son las propiedades CSS escritas en el HTML a través de la propiedad style de toda etiqueta. También es una mala práctica y debes evitarlo.
<h1 style=""color: blue;">Especificidad</h1>
Especificidad en selectores
El tema de los selectores ya lo conoces, por lo tanto, los selectores de tipo ID son más específicos que las clases, atributos y pseudoclases. Estas últimas son más específicas que los elementos y pseudoelementos. El selector universal tiene una especificidad de 0.
En un proyecto deberías evitar los !important y estilos en línea, para trabajar únicamente con la especificidad de los selectores. Sin embargo, debes tener presente que los selectores combinadores suman la especificidad de cada selector básico para obtener la especificidad total de la regla CSS.
Si utilizas Visual Studio Code y mantienes el mouse sobre el selector, te mostrará la especificidad total. Specificity Calculator es una página web donde puedes calcular la especificidad.
Contribución creada por Andrés Guano (Platzi Contributor).
Juan Esteban Henao Uribe
En Vscode podemos ver la especificidad de nuestros elementos colocando el cursor sobre el nombre del selector.
Enrique López
Muy buen dato
Reynaldo Fuentes Garcia
Gracias por el dato.
Carlos Eduardo Gomez García
Entender especificidad es muy importante, sobre todo porque suele pasarnos que escribimos algún estilo y vemos que por alguna razón no se aplica. Esto es muy normal que pase y acabamos poniéndole un !important (que por cierto, es mala práctica usar !important 👀).
.
¡Lo genial de esto es que es tan fácil como hacer una suma! Muchas personas suelen confundirse con este tema, pero tú ahora ya sabes cómo funciona 😉. Básicamente, CSS acabará aplicándole los estilos al selector que sea más específico, y podemos determinar su especificidad simplemente haciendo una suma... ¡como un juego de puntos! 😄.
.
La próxima vez que tengas un problema de que tus estilos no se están aplicando (o que en el inspector de elementos te salen tachados) recuerda que probablemente puede ser un problema de especificidad. ¡Y ten siempre esta tablita a la mano!
.
Reynaldo Fuentes Garcia
Gracias por el aporte, siempre complementando.
Raul Romero
Buena descripción.
Stylesheets cascade
A un nivel muy simple, esto significa que el orden de las reglas CSS importa; cuando se aplican dos reglas que tienen igual especificidad, la que viene en último lugar en el CSS es la que se utilizará.
Especificidad
La especificidad es el medio por el que los navegadores deciden qué valores de propiedades CSS son los más relevantes para un elemento y, por tanto, se aplicarán. La especificidad se basa en las reglas de concordancia que se componen de diferentes tipos de selectores CSS. La cantidad de especificidad que tiene un selector se mide utilizando cuatro valores diferentes (o componentes), que se pueden considerar como miles, cientos, decenas y unos
Miles Puntúa uno en esta columna si la declaración está dentro de un atributo style, también conocido como estilos en línea. Estas declaraciones no tienen selectores, por lo que su especificidad es siempre 1000.
Cientos
Puntúa uno en esta columna por cada selector de ID contenido dentro del selector general.
Decenas
Puntúa uno en esta columna por cada selector de clase, selector de atributos o pseudoclase que contenga el selector general.
Unos
Puntúa uno en esta columna por cada selector de elemento o pseudo-elemento contenido dentro del selector general.
!important cambia la forma en que la cascada funciona normalmente, por lo que puede hacer que la depuración de los problemas de CSS sea realmente difícil de resolver, especialmente en una hoja de estilos grande.
No lo uses si puedes evitarlo.
La única manera de anular esta declaración !important sería incluir otra declaración !important en una declaración con la misma especificidad más adelante en el orden de las fuentes, o una con mayor especificidad.
Nazareno Aznar Altamiranda
Consejo importante: 👉 Aprendanse a calcular la especificidad a pleno. . No es un chiste, NO ES UN MEME . Les va a ahorrar un monton de tiempo, de repente puede pasar que un estilo no les va a funcionar y no van a saber por qué, y por más que intenten no hay caso. En la mayoria de los casos, suele ser un problema de especificidad
Rosario Sánchez
Es cierto! y también es una pregunta clave en entrevistas laborales como Front End. Al menos a mí me preguntaron eso siempre en las que tuve como junior dev.
Kevin Orellana
Gracias por tu consejo
Andrés Felipe Lopez gomez
Luis Fernando Callisaya Surco
Gracias <3
Rolando Mamani Salas
Muchas Gracias muy Claro
Diego Gutiérrez Catzín
Wow, llevo ya bastante prácticas con CSS (nada 100% profesional) e incluso he hecho proyectos enteros escolares con CSS puro y no tenía ni idea de la existencia de la especificidad, ni si quiera había visto alguna mención de esto en ningún lado, siento que he descubierto un secreto muy oculto de CSS pero realmente parece que es un aspecto muy básico jajaj XD. Estaba por saltarme este curso pues creía que sabía lo esencial de HTML y CSS pero esto me hace ver que siempre hay algo nuevo por aprender.
Manuel De León
Creo que inconscientemente la profe eligió el color azul ya que prefiere seguir al conejo hasta el País de las Maravillas y con esto hacernos tomar el curso de animaciones con CSS donde se ven en práctica todo este tema de la especificidad y selectores... Eso o necesito dormir xD
David Castellanos Zayas
Creo que somos dos los que necesitamos dormir 😂😂
Joel Dominguez Merino
Cuando no has tomado el curso de animaciones y puedes dormir tranquilo 😎 Pero ya esta en la mira tomar ese cursito,,asi que pronto los vere
Guadalupe Monge Barale
Usar !important es como usar div en cualesquier lugar del HTML. Son malas prácticas y pueden poner en evidencia una escasa comprensión del lenguaje.
++__++
Jose Tellez
- -
Interesante experimento, me gustó mucho.
Ricardo Alfonso Chavez Vilcapoma
Genial...anotado.
Dani Landa
Si escriben ! se va agregar toda la estructura básica :)
Abraham Navarro
Good Luck
Jose Angel Condori Ccapa
jerarquia de la importancia en css !important = 10000 estilos en linea = 1000 #id =100 .clases= 10 psrudo clases y pseudoelementos =10 selectot univeral = 0
Enrique Illescas Castillo
muy buen aporte, me dejó mas en claro. Gracias
Platzi Team
Una práctica para entender mejor la especificidad, seguramente a alguno le servirá 😎. .
Aldo Gianmarco De La Cruz Ventura
No entiendo bien cómo sumar la especificidad ¿alguien podría dar un ejemplo mejor?
Luis Fernando Rodriguez Boett
Teffy hizo un hilo en twitter explicando mejor acerca de la especifidad https://twitter.com/teffcode/status/1159162961090490369?s=20
Echale un vistazo :relieved: .
Óscar Andrés Ugarte De La Fuente
Velo como esto !important -> 10,000 (10 milesimas) Estilos en linea -> 1000 (milesimas) son los que pones en la etiqueta, ejemplo:
<p style="color: red;">hola</p>
#id -> 100 (centendas) .clases -> 10 (decenas) los pseudoelementos y elementos -> 1 (unidad) selector universal -> 0
Básicamente puse lo que puso teff pero en texto ( un poco difícil de leer) Bn el navegador lo leerá como lo explicaron, entre mas peso tenga la especificidad, le dará mas importancia.
Puedes tener una etiqueta que tenga un id, clase, elementos y pseudo elementos pero si al final la sobrescribes con un "!important" el navegador pondrá el del important por que tiene mas peso. Creo que te hice mas bolas jajaj perdón si no me explique
Diego Andrés Garzón Girón
Dejo aquí mis apuntes en PDF hechos con Notion: https://drive.google.com/file/d/19bMxxs6e9IbITrtPKaIkWxTIzU2jLy4o/view?usp=sharing
Daniela Angulo Ruiz
Natalia Rodriguez
Tus notas son muy lindas
Marco Antonio Quiñones Inga
Tus apuntes me ayudan mucho jeje gracias
Samuel Montoya Gallo
Dudo si deba memorizar todo esto, o solo tenerlo claro para el momento de la práctica "real" aplicarlo y en últimas aprenderlo más por el uso que por la memoria... Qué opinan?
Estefany Aguilar
ProfesorPuedes tenerlo claro simplemente. De seguro con la práctica constante lo irás interiorizando cada vez más. Aún así, sí recomiendo memorizarlo en caso de que tengas una entrevista técnica :)
Porfirio González López
Mi más grande error fue "aprender" viendo las clases y nunca practicar. Adivina como me salio Exacto! Del caraj* ahora me tienes regresando a cursos pasados porque lo aprendido ya se me olvido y nunca lo comprendí totalmente.
Loraine Mercedes Badillo Hernandez
¿Qué plugins instalar en Visual Studio Code? para que se vea asi como el de Teffy cual me recomiendan?
Dani Landa
¡Hola Loraine! El tema que usa la maestra se llama Kawaii y lo puedes instalar accediendo a esta lista: https://marketplace.visualstudio.com/items?itemName=diff001a.kawaii-theme
¡Saludos!
Henry Alexander Velásquez Rosas
Extensiones y personalización de Visual Studio Code
Cambiar tema:
Activar Auto Save:
Emily García
La especificidad es un peso (importancia o valor) que se le asigna a una declaración CSS dada, determinada por el número correspondiente de cada tipo de selector. Cuando varias declaraciones tienen igual especificidad, se aplicará al elemento la última declaración encontrada en el CSS. La especificidad solo se aplica cuando el mismo elemento es objetivo de múltiples declaraciones. Según las reglas de CSS, en caso de que un elemento sea objeto de una declaración directa, esta siempre tendrá preferencia sobre las reglas heredadas de su ancestro.
Y les dejo este link, quizá le sirva a alguien:) https://developer.mozilla.org/es/docs/Web/CSS/Specificity
Yerko Cortés Baeza
Yo creyendo que sabia lo suficiente de CSS y Estefany llega con la especificidad y la predominancia con el ejemplo de los colores. QUE CLASE DE BRUJERÍA ES ESTA! 😱😱😱
Frandel Corporan Rodríguez
x2 jajaaj, Esto es educación de calidad.
David Limon
Les dejo un pequeño aporte...
Marcos Monteverde
tremendo, gracias!!
Tiene importancia el orden en el que colocas las clases en la etiqueta HTML?
He estado haciendo pruebas y cuando tengo dos bloques de codigo en css el que prevalece no es el ultimo en CSS, sino el la primera clase definida en la etiqueta HTML . Aquí está mi codigo