40
loading...
This website collects cookies to deliver better user experience
!important
para que funcionara. O quizás hayas recurrido a escribir el CSS inline en el elemento del archivo HTML. Por lo general, el problema puede ser que has creado dos reglas que podrían aplicarse al mismo elemento.Una regla también conocida como estilo, es una colección de declaraciones dirigidas a uno o más selectores, una hoja de estilo se compone de múltiples reglas.
<h1 class="title" id="page-title">Lupita Code</h1>
h1 {
font-family: serif;
}
#page-title {
font-family: sans-serif;
}
.title {
font-family: monospace;
}
<h1>
. ¿Cuál de ellas ganará? 🤔. Para determinar la respuesta, el navegador (para saber que estilos tiene prioridad sobre los demás) sigue una serie de reglas o pasos (en orden) que son: Origen de la hoja de estilo, especificidad de los selectores y orden en que se declaran los estilos. Estos conceptos lo vamos a explicar más adelante.sans-serif
.!important
.button {
color: red;
}
button {
color: blue;
}
.red {
color: red;
}
.blue {
color: blue;
}
-------
<div class=”red blue”> Lupita Code </div>
<div class=”blue red”> Lupita Code </div>
En línea dentro de la etiqueta HTML usando el atributo style;
: El CSS en línea es el que tiene mayor precedencia, por lo que siempre será el que tenga prioridad sobre otras reglas CSS.
En el <head>
a través de la la etiqueta <style>
: el CSS incrustado/interno será el siguiente a tener en cuenta en orden de prioridad.
Asociando una hoja de estilo externa a nuestro documento HTML usando la etiqueta <link>
añadida en el <head>
: CSS externos son la tercera opción de prioridad al momento de tomar en cuenta las reglas CSS.
En el <head>
usando @import
dentro de la etiqueta <style>
, ejemplo: <style> @import url('style.css') </style>
(poco usable).
<link>
que incluye CSS en la parte superior de tu página HTML, y luego otro <link>
que incluye CSS en la parte inferior de tu página: el <link>
inferior tendrá la mayor especificidad. Lo mismo ocurre con los elementos <style>
incrustados. Se vuelven más específicos cuanto más abajo en la página estén.<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<button>I am a button</button>
<style>
button {
background: pink;
}
</style>
</body>
</html>
/*styles.css*/
button {
background: yellow;
}
<style>
incrustada está más abajo en la página que la etiqueta <link>
, así que aunque la especificidad del botón es la misma, la posición de la regla de estilo la hace ganar. Por lo tanto, El botón tendrá un background de color rosa pink
.<head>
de tu documento HTML, la segunda hoja de estilo anulará las reglas de la primera. Esta es también la razón por la que si estás usando un reset de CSS o un framework, querrás cargarlo antes de tus estilos personalizados.background: purple
fue declarado en último lugar. Debido a que el background: green
fue declarado antes que el background: purple
, ahora es ignorado por el navegador..my-element {
background: green;
background: purple;
}
font-size
se declara dos veces. Si la función clamp()
está soportado en el navegador, entonces la declaración anterior de font-size
será descartada. Si clamp()
no está soportado por el navegador, la declaración inicial será respetada, y el tamaño de la fuente será 1.5rem
..my-element {
font-size: 1.5rem;
font-size: clamp(1.5rem, calc(1rem + 3vw), 2rem);
}
#something
)..something
) / pseudo-selectors (:hover
).<h1>
) & pseudo-elements (::before
).:not()
no tienen ningún efecto sobre la especificidad.title
del elemento <h1>
hará que esa regla sea más específica y por lo tanto se considera más importante para ser aplicada. Esto significa que el <h1>
tendrá el color red
.<h1 class="title">Heading</h1>
.title {
color: red;
}
h1 {
color: blue;
}
<h1>
se encuentra más abajo, podrías pensar que va a sobrescribir a los estilos de la clase, pero no es así, ya que la especificidad considera más importante la clase.a.my-class.another-class[href]:hover
obtienes algo bastante difícil de sobrescribir con otro CSS. <h1>
a <h6>
) y a los párrafos (<p>
) se les da un margen superior e inferior, a las listas (<ol>
y <ul>
) se les da un padding a la izquierda, y se establecen los colores de los enlaces y los tamaños de letra por defecto.!important
: Cualquier !important
que el desarrollador añada a sus declaraciones.!important
: Cualquier !important
que venga del sistema operativo, o del CSS de la extensión del navegador.!important
: Cualquier !important
que esté definido en el CSS por defecto del navegador.!important
, tendra prioridad la del CSS de usuario sobre la del CSS de autor.<h1>Lorem ipsum</h1>
h1 { margin-block-start: 0.83em; }
h1 { margin-block-start: 20px; }
h1 { margin-block-start: 2ch; }
@media (max-width: 480px) {
h1 { margin-block-start: 1ch; }
}
h1 { margin-block-start: 2rem !important; }
<h1>
es de 2rem
esto es porque el estilo personalizado del usuario es más especifico ya que contiene la declaración !important
y va a anular cualquier otro estilo.font-size
, background
o color
.animation
.!important
(siguiendo el mismo orden que el origen de la hoja de estilos).transition
.animation
y transition
tienen mayor importancia que las reglas comunes.!important
. Esto se debe a que cuando una animación o transición se activa, su comportamiento esperado es cambiar el estado visual.!important
. Esto es aún más difícil de anular que un ID. Es útil saber que es lo que hace !important
. Sin embargo, te recomiendo que no lo utilices.