¿Cómo puedo anular los estilos en línea con CSS externo?


99

Tengo un marcado que usa estilos en línea, pero no tengo acceso para cambiar este marcado. ¿Cómo anulo los estilos en línea en un documento que usa solo CSS? No quiero usar jQuery o JavaScript.

HTML:

<div style="font-size: 18px; color: red;">
    Hello World, How Can I Change The Color To Blue?
</div>

CSS:

div {
   color: blue; 
   /* This Isn't Working */
}

2
¿Por qué utilizar estilos en línea si desea anularlos?
Sinister Beard

36
@BFDatabaseAdmin Es posible que no pueda acceder al marcado donde se declaran los estilos en línea.
TylerH

Respuestas:


176

La única forma de anular el estilo en línea es utilizando una !importantpalabra clave al lado de la regla CSS. A continuación se muestra un ejemplo de ello.

div {
        color: blue !important;
       /* Adding !important will give this rule more precedence over inline style */
    }
<div style="font-size: 18px; color: red;">
    Hello, World. How can I change this to blue?
</div>

Notas importantes:

  • El uso !importantno se considera una buena práctica . Por lo tanto, debe evitar tanto !importantel estilo en línea.

  • Agregar la !importantpalabra clave a cualquier regla CSS permite que la regla preceda con fuerza sobre todas las demás reglas CSS para ese elemento.

  • Incluso anula los estilos en línea del marcado.

  • La única forma de anular es utilizando otra !importantregla , declarada con mayor especificidad de CSS en el CSS o con la misma especificidad de CSS más adelante en el código.

  • Debe leer: especificidad de CSS por MDN 🔗


1
bueno, ese estilo depende de él, en realidad no es necesario que lo use solo para anular el CSS en línea
Rohit Agrawal

1
¡Lo sé, pero lo mismo que estoy diciendo! Importante solo aumentará la puntuación para una propiedad específica, es posible que esté usando otras propiedades (no para anular) en el bloque some
Rohit Agrawal

¿Por qué es una mala práctica importante?
Sinister Beard

1
@BFDatabaseAdmin porque no puede anular eso más tarde si lo necesita para algún caso especial
Rohit Agrawal

1
@BFWebAdmin el problema es que a veces no tienes otra opción. por ejemplo, la "insignia" de la nueva recaptcha invisible se puede diseñar pero tiene estilos parcialmente en línea, por lo que debe anularlos de esta manera o por js y prefiere una solución CSS pura.
My1

26

inline-stylesen un documento tienen la prioridad más alta, por ejemplo, diga si desea cambiar el color de un divelemento a blue, pero inline styletiene una colorpropiedad establecida enred

<div style="font-size: 18px; color: red;">
   Hello World, How Can I Change The Color To Blue?
</div>
div {
   color: blue; 
   /* This Won't Work, As Inline Styles Have Color Red And As 
      Inline Styles Have Highest Priority, We Cannot Over Ride 
      The Color Using An Element Selector */
}

Entonces, ¿debería usar jQuery / Javascript? - La respuesta es NO

Podemos usar element-attrCSS Selector con !important, nota, !importantes importante aquí, de lo contrario no anulará los estilos en línea.

<div style="font-size: 30px; color: red;">
    This is a test to see whether the inline styles can be over ridden with CSS?
</div>
div[style] {
   font-size: 12px !important;
   color: blue !important;
}

Manifestación

Nota: Usar !importantSOLO funcionará aquí, pero he usado el div[style]selector para seleccionar específicamente divtener style atributo


2
Entonces, ¿debería usar estilos en línea? - La respuesta es NO :-)
PeeHaa

"Entonces, ¿debería usar jQuery / Javascript? - La respuesta es NO" ¿Por qué? Si estoy trabajando en un entorno (como Sharepoint) donde los estilos en línea se agregan a los elementos por una entidad incontrolable, ¿por qué no usaría Jquery para eliminar los estilos en línea ofensivos para que el tema externo de mi sitio se muestre? Parece una solución más de precesión que explotar! Importante en un rasgo que podría querer anular en una instancia específica más adelante.
Neberu

2
@Neberu: porque JS se puede bloquear / desactivar en el navegador. El uso !importantno puede AFAIK.
Tony

1
también js es imo malo en general, quiero decir, ¿abres archivos ejecutables enviados por ti desde una persona desconocida? Supongo que no, pero un navegador hace esto con cada clic
Mi1

11

Puede anular fácilmente el estilo en línea, excepto el !importantestilo en línea

entonces

<div style="font-size: 18px; color: red;">
    Hello World, How Can I Change The Color To Blue?
</div>

div {
   color: blue !important; 
   /* This will  Work */
}

pero si tienes

<div style="font-size: 18px; color: red !important;">
    Hello World, How Can I Change The Color To Blue?
</div>

div {
   color: blue !important; 
   /* This Isn't Working */
}

ahora será redsolo .. y no puedes anularlo


1
¿En qué se diferencia esto de las respuestas que se agregaron meses antes?
Sinister Beard

4
@BFDatabaseAdmin Esta respuesta describe el comportamiento cuando el estilo en línea tiene !importantun punto que no cubre ninguna de las otras respuestas. Esta puede no ser una respuesta completamente independiente, pero es diferente a las otras respuestas proporcionadas.
grg

pero, de nuevo, usar un estilo en línea con importante es realmente exagerado, ya que de todos modos tiene la prioridad más alta por defecto.
My1

6
<div style="background: red;">
    The inline styles for this div should make it red.
</div>

div[style] {
   background: yellow !important;
}

A continuación se muestra el enlace para obtener más detalles: http://css-tricks.com/override-inline-styles-with-css/


5
¿En qué se diferencia esto de las respuestas que se agregaron meses antes?
Sinister Beard

1
tal vez no haya diferencia si ya conocías la respuesta ... pero para algunos novatos, espero que les pueda ayudar ... especialmente el enlace donde está más detallado ... de todas formas gracias por comentar.
jroi_web

1

utilizado !importanten la propiedad CSS

<div style="color: red;">
    Hello World, How Can I Change The Color To Blue?
</div>

div {
        color: blue !important;
    }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.