Estoy seguro de que esto debe haber sido mencionado / preguntado antes, pero he estado buscando una época sin suerte, ¡mi terminología debe estar equivocada!
Recuerdo vagamente un tweet que vi hace un tiempo que sugería que había una regla css disponible que eliminaría cualquier estilo previamente establecido en la hoja de estilo para un elemento en particular.
Un buen ejemplo de uso podría ser en un sitio RWD móvil primero, donde gran parte del estilo utilizado para un elemento en particular en las vistas de pantalla pequeña necesita 'restablecerse' o eliminarse para el mismo elemento en la vista de escritorio.
Una regla CSS que podría lograr algo como:
.element {
all: none;
}
Ejemplo de uso:
/* mobile first */
.element {
margin: 0 10;
transform: translate3d(0, 0, 0);
z-index: 50;
display: block;
etc..
etc..
}
@media only screen and (min-width: 980px) {
.element {
all: none;
}
}
Por lo tanto, podríamos eliminar o restablecer rápidamente el estilo sin tener que declarar cada propiedad.
¿Tiene sentido?
all
que se propone para restablecer todas las propiedades CSS de un elemento dado a ciertos valores de todo el CSS - el valor que desea utilizar seríaunset
, que restablece la propiedad a uno de su valor hereditario si se hereda de forma predeterminada, o de lo contrario, su valor inicial. No se sabe nada sobre la implementación, pero es bueno saber que alguien lo ha pensado.all: revert
lo haré Mira mi respuesta. @CBroe Sí, tal cosa existe ahora.Respuestas:
La palabra clave CSS3
initial
establece la propiedad CSS3 en el valor inicial como se define en la especificación . Lainitial
palabra clave tiene un amplio soporte de navegador, excepto para las familias IE y Opera Mini.Dado que la falta de soporte de IE puede causar problemas, estas son algunas de las formas en que puede restablecer algunas propiedades CSS a sus valores iniciales:
Como se menciona en un comentario de @ user566245:
[POST EDIT FEB 4, '17] Votado por convertirse en una norma moderna, el usuario Joost
EJEMPLO DE W3
JAVASCRIPT?
Nadie pensó en otra cosa que CSS para restablecer CSS? ¿Si?
Existe ese recorte totalmente relevante: https://stackoverflow.com/a/14791113/845310
respondido Feb 9 '13 a las 20:15 por VisioN
Con todo esto dicho; no creo que un restablecimiento de css sea algo factible a menos que terminemos con un solo navegador web ... si el 'predeterminado' lo establece el navegador al final.
A modo de comparación, aquí está la lista de valores de Firefox 40.0 para
<blockquote style="all: unset;font-style: oblique">
donde sefont-style: oblique
desencadena la operación DOM.fuente
Para futuros lectores. Creo que esto es lo que se quiso decir, pero actualmente no es realmente compatible (ver a continuación):
fuente
all
.all
como bajo consideración . Una versión futura de Edge bien puede ser compatible.#someselector { ... * { all: unset; } ... }
es en Sass. No has mencionado a Sass aquí, ¿es algo nuevo de CSS3? La búsqueda de "CSS anidado" solo me proporciona tutoriales de nivel de entrada e información de Sass. Agregar la... * { ... } ...
parte anidada a mi CSS (en HTML5) rompe mi documento (mis elementos secundarios toman individualmente el estilo que solo quería aplicar al padre).Hay una nueva solución para este problema.
Use
all: revert
oall: unset
.De MDN:
Entonces, si el elemento tiene un nombre de clase como
remove-all-styles
:P.ej:
HTML:
Con CSS:
Restablecerá todos los estilos aplicados por
other-class
,another-class
y todos los demás estilos heredados y aplicados a esodiv
.O en tu caso:
Lo haré
Haga clic aquí para conocer la diferencia entre los estilos de autor, usuario y agente de usuario.
Por ejemplo: si queremos aislar widgets / componentes incrustados de los estilos de la página que los contiene , podríamos escribir:
Lo que revertirá todo
author styles
(es decir, CSS del desarrollador) auser styles
(estilos que un usuario de nuestro sitio web estableció - escenario menos probable) ouser-agent
estilos propios si no se configuraron estilos de usuario.Más detalles aquí: https://developer.mozilla.org/en-US/docs/Web/CSS/revert
Y el único problema es el soporte : solo Safari 9.1 y iOS Safari 9.3 tienen soporte para el
revert
valor al momento de escribir.Entonces diré que use este estilo y recurra a cualquier otra respuesta.
fuente
all: initial
yall: unset
funcionó para mí en MS Edge 16).Permítanme responder esta pregunta a fondo, porque ha sido una fuente de dolor para mí durante varios años y muy pocas personas realmente entienden el problema y por qué es importante que se resuelva. Si fuera responsable de la especificación CSS, me avergonzaría, francamente, por no haber abordado esto en la última década.
El problema
Debe insertar marcas en un documento HTML y debe verse de una manera específica. Además, no es propietario de este documento, por lo que no puede cambiar las reglas de estilo existentes. No tiene idea de cuáles podrían ser las hojas de estilo o a qué pueden cambiar.
Los casos de uso para esto son cuando proporciona un componente visualizable para que lo usen sitios web de terceros desconocidos. Ejemplos de esto serían:
La solución más simple
Ponga todo en un iframe. Esto tiene su propio conjunto de limitaciones:
Si su contenido puede caber en un cuadro, puede evitar el problema n. ° 1 haciendo que su contenido escriba un iframe y establezca explícitamente el contenido, evitando así el problema, ya que el iframe y el documento compartirán el mismo dominio.
Solución CSS
He buscado por todas partes la solución a esto, pero desafortunadamente no hay ninguna. Lo mejor que puede hacer es anular explícitamente todas las propiedades posibles que pueden anularse y anularlas a lo que cree que debería ser su valor predeterminado.
Incluso cuando anula, no hay forma de garantizar que una regla CSS más específica no anule la suya . Lo mejor que puede hacer aquí es hacer que sus reglas de anulación se orienten de la manera más específica posible y esperar que el documento principal no sea el mejor por accidente: use una identificación oscura o aleatoria en el elemento padre de su contenido, y use! Important en todas las definiciones de valores de propiedad .
fuente
p { color: blue}
no se restablecerá)otras formas:
1) incluya el código css (archivo) de restablecimiento CSS de Yahoo y luego coloque todo dentro de este DIV:
2) o usar
fuente
No recomiendo usar la respuesta que se ha marcado como correcta aquí. Es una gran gota de CSS que intenta cubrir todo.
Te sugiero que evalúes cómo eliminar el estilo de un elemento por caso.
Digamos que para fines de SEO debe incluir un H1 en una página que no tiene un encabezado real en el diseño. Es posible que desee hacer que el enlace de navegación de esa página sea un H1 pero, por supuesto, no desea que ese enlace de navegación se muestre como un H1 gigante en la página.
Lo que debe hacer es envolver ese elemento en una etiqueta h1 e inspeccionarlo. Vea qué estilos CSS se están aplicando específicamente al elemento h1.
Digamos que veo los siguientes estilos aplicados al elemento.
Ahora necesita señalar con precisión el estilo exacto que se aplica al H1 y desarmarlos en una clase css. Esto se parecería a lo siguiente:
Esto es mucho más limpio y no solo descarga un blob aleatorio de código en su CSS que no sabe lo que realmente está haciendo.
Ahora puedes agregar esta clase a tu h1
fuente
Si está utilizando sass en un sistema de compilación, una forma de hacerlo que funcionará en todos los principales navegadores es envolver todas sus importaciones de estilo con un selector: not () así ...
Luego puede usar la clase de desactivación en un contenedor y el subcontenido no tendrá ninguno de sus estilos.
Por supuesto, todos sus estilos ahora estarán antepuestos con el selector: not (), por lo que es un poco desagradable, pero funciona bien.
fuente
Usted mencionó los sitios móviles primero ... Para un diseño receptivo, ciertamente es posible anular los estilos de pantalla pequeña con los estilos de pantalla grande. Pero puede que no sea necesario.
Prueba esto:
Esas consultas de medios no se superponen, por lo que sus reglas no se anulan entre sí. Esto facilita el mantenimiento de cada conjunto de estilos por separado.
fuente
MEJOR SOLUCIÓN
Descargue la hoja de estilo "copiar / pegar" para restablecer las propiedades css a las predeterminadas (estilo UA):
https://github.com/monmomo04/resetCss.git
Gracias @ Milche Patern!
Enlace útil:Realmente estaba buscando el valor de propiedades de estilo de reinicio / predeterminado. Mi primer intento fue copiar el valor calculado de la herramienta de desarrollo del navegador del elemento raíz (html). Pero como se calculó, se habría visto / trabajado diferente en cada sistema.
Para aquellos que encuentran un bloqueo del navegador cuando intentan usar el asterisco * para restablecer el estilo de los elementos secundarios, y como sabía que no funcionaba para ustedes, he reemplazado el asterisco "*" con el nombre de todas las etiquetas HTML. . El navegador no se bloqueó; Estoy en la versión de Chrome 46.0.2490.71 m.
Por último, es bueno mencionar que esas propiedades restablecerán el estilo al estilo predeterminado del elemento raíz topest pero no al valor inicial para cada elemento HTML. Entonces, para corregir esto, tomé los estilos de "agente de usuario" del navegador basado en webkit y lo implementé bajo la clase "reset-this".
Descargue la hoja de estilo "copiar / pegar" para restablecer las propiedades css a las predeterminadas (estilo UA):
https://github.com/monmomo04/resetCss.git
Estilo de agente de usuario:
CSS predeterminado de los navegadores para elementos HTML
http://trac.webkit.org/browser/trunk/Source/WebCore/css/html.css
Especificidad de CSS (preste atención a la especificidad):
https://css-tricks.com/specifics-on-css-specificity/
https://github.com/monmomo04/resetCss.git
fuente
En mi escenario específico, quería omitir la aplicación de estilos comunes a una parte específica de la página, mejor ilustrada así:
Después de jugar con el restablecimiento de CSS, que no trajo mucho éxito (principalmente debido a la precedencia de las reglas y la compleja jerarquía de la hoja de estilo), saqué al mercado jQuery ubicuo al rescate, lo que hizo el trabajo muy rápido y razonablemente sucio:
(Ahora diga lo mal que es usar JS para lidiar con CSS :-))
fuente
Para aquellos de ustedes que intentan descubrir cómo eliminar realmente el estilo del elemento solamente, sin eliminar el CSS de los archivos, esta solución funciona con jquery:
fuente
si configura su CSS dentro de las clases, puede eliminarlas fácilmente utilizando el método jQuery removeClass (). El siguiente código elimina la clase .element:
Si no se especifica ningún parámetro, este método eliminará TODOS los nombres de clase de los elementos seleccionados.
fuente
No, esto es solo una cuestión de administrar mejor su estructura CSS.
En su caso, ordenaría mi css algo como esto:
Solo experimenta.
fuente
¿Hay alguna posibilidad de que estés buscando la regla importante? No deshace todas las declaraciones, pero proporciona una forma de anularlas.
"Cuando se utiliza una regla! Important en una declaración de estilo, esta declaración anula cualquier otra declaración realizada en el CSS, donde sea que esté en la lista de declaraciones. Aunque, important no tiene nada que ver con la especificidad".
https://developer.mozilla.org/en-US/docs/CSS/Specificity#The_!important_exception
fuente