¿Cómo se agregan reglas CSS (por ejemplo strong { color: red }
) mediante el uso de Javascript?
javascript
css
nickf
fuente
fuente
<strong>
se agrega un nuevo elemento al documento.Respuestas:
También puede hacerlo utilizando las interfaces CSS de nivel 2 DOM ( MDN ):
... en todos menos (naturalmente) IE8 y anteriores, que utilizan su propia redacción marginalmente diferente:
Hay una ventaja teórica en esto en comparación con el método createElement-set-innerHTML, en que no tiene que preocuparse por poner caracteres HTML especiales en innerHTML, pero en la práctica los elementos de estilo son CDATA en HTML heredado y '<' y '&' rara vez se usan en hojas de estilo de todos modos.
Necesita una hoja de estilo en su lugar antes de que pueda comenzar a agregarla de esta manera. Puede ser cualquier hoja de estilo activa existente: externa, incrustada o vacía, no importa. Si no hay uno, la única forma estándar de crearlo en este momento es con createElement.
fuente
sheet = window.document.styleSheets[0]
(debe tener al menos un <style type = "text / css"> </style> allí).SecurityError: The operation is insecure.
El enfoque simple y directo es crear y agregar un nuevo
style
nodo al documento.fuente
document.body
También es más corto de escribir y más rápido de ejecutar quedocument.getElementsByTagName("head")[0]
y evita los problemas de navegador cruzado de insertRule / addRule.document.head.appendChild
.document.body.appendChild(css);
usarlo, asegúrese de que el nuevo CSS siempre sea la última regla.La solución de Ben Blank no funcionaría en IE8 para mí.
Sin embargo, esto funcionó en IE8
fuente
head
anterior.cssText
, o IE6-8 se bloqueará sicssCode
contiene un @ -directivo, como@import
o@font-face
, consulte la Actualización de phpied.com/dynamic-script-and-style-elements-in-ie y stackoverflow .com / a / 7952904Aquí hay una versión ligeramente actualizada de la solución de Chris Herring , teniendo en cuenta que también puede usarla
innerHTML
en lugar de crear un nuevo nodo de texto:fuente
head
anterior.cssText
, o IE6-8 se bloqueará sicode
contiene un @ -directivo, como@import
o@font-face
, consulte la Actualización de phpied.com/dynamic-script-and-style-elements-in-ie y stackoverflow .com / a / 7952904El más corto One Liner
fuente
Puede agregar clases o atributos de estilo elemento por elemento.
Por ejemplo:
Dónde podría hacer this.style.background, this.style.font-size, etc. También puede aplicar un estilo usando este mismo método ala
Si desea hacer esto en una función de JavaScript, puede usar getElementByID en lugar de 'this'.
fuente
Este sencillo ejemplo de add
<style>
in head of htmlEstilo dinámico de origen : manipulación de CSS con JavaScript
fuente
Recientemente, YUI agregó una utilidad específicamente para esto. Ver stylesheet.js aquí.
fuente
Esta es mi solución para agregar una regla css al final de la última lista de hojas de estilo:
fuente
Otra opción es usar JQuery para almacenar la propiedad de estilo en línea del elemento, agregarla y luego actualizar la propiedad de estilo del elemento con los nuevos valores. Como sigue:
Y luego ejecútelo con los nuevos atributos CSS como un objeto.
Este puede no ser necesariamente el método más eficiente (estoy abierto a sugerencias sobre cómo mejorar esto. :)), pero definitivamente funciona.
fuente
Aquí hay una plantilla de muestra para ayudarlo a comenzar
Requiere 0 bibliotecas y usa solo javascript para inyectar tanto HTML como CSS.
La función fue prestada del usuario @Husky arriba
Útil si desea ejecutar un script de tampermonkey y desea agregar una superposición de alternar en un sitio web (por ejemplo, una aplicación de notas, por ejemplo)
fuente
Si sabe que
<style>
existe al menos una etiqueta en la página, use esta función:uso:
fuente
Aquí está mi función de propósito general que parametriza el selector CSS y las reglas, y opcionalmente toma un nombre de archivo css (distingue entre mayúsculas y minúsculas) si desea agregar a una hoja en particular (de lo contrario, si no proporciona un nombre de archivo CSS, se creará un nuevo elemento de estilo y lo agregará al encabezado existente. Creará como máximo un nuevo elemento de estilo y lo reutilizará en futuras llamadas a funciones). Funciona con FF, Chrome e IE9 + (quizás también antes, sin probar).
fuente
utilizar
.css
en Jquery como$('strong').css('background','red');
fuente