CSSStyleSheet.insertRule()

El m茅todo CSSStyleSheet.insertRule() inserta una nueva regla de estilo en la actual hoja de estilos.

Para conjuntos de reglas 茅sta contiene tanto al selector como la declaraci贸n de estilo. Para reglas-arroba, 茅sta especifica tanto al identificador-arroba como como al contenido de la regla. Si se asignan varias reglas en el  DOMString como par谩metro se dispara una  DOMException (en-US) con el c贸digo SYNTAX_ERR.

Syntax

stylesheet.insertRule(regla, 铆ndice)

Parameters

  • regla es un DOMString que contiene la regla que se va a insertar (selector y declaraci贸n).
  • 铆ndice es un unsigned int que representa la posicion en la que se va a insertar.

Ejemplos

Ejemplo 1

// Insertar una nueva regla al principio de mi hoja de estilos
myStyle.insertRule("#blanc { color: white }", 0);

Example 2

/**
 * Agregar una regla de hoja de estilos al documento(sin embargo, una mejor pr谩ctica puede ser
 * cambiar las clases dinamicamente, as铆 se mantiene la informaci贸n de estilo en
 * hojas de estilo genuinas (evitando agregar elementos extras al DOM))
 * Note que se necesita una matriz para las declaraciones y reglas ya que ECMAScript
 * no proporciona un orden de iteraci贸n predecible y como CSS
 * depende del orden(i.e., es cascada); aquellos sin necesidad de
 * reglas en cascada podr铆an construir una API basada en objetos de acceso m谩s amigable.
 * @param {Matriz} reglas. Acepta una matriz de  declaraciones JSON-encoded
 * @example
addStylesheetRules([
  ['h2', // Acepta un segundo argumento como una matriz de matrices
    ['color', 'red'],
    ['background-color', 'green', true] // 'true' para reglas !important
  ],
  ['.myClass', ['background-color', 'yellow']
  ]
]);
 */
function addStylesheetRules (decls) {
  var styleEl = document.createElement('style');
  document.head.appendChild(styleEl);
  // Aparentemente 驴alguna versi贸n de Safari necesita la siguiente linea? No lo s茅.
  styleEl.appendChild(document.createTextNode(''));
  var s = styleEl.sheet;
  for (var i=0, rl = rules.length; i < rl; i++) {
    var j = 1, rule = rules[i], selector = decl[0], propStr = '';
    // Si el segundo argumento de una regla es una matriz de matrices, corrijamos nuestras variables.
    if (Object.prototype.toString.call(rule[1][0]) === '[object Array]') {
      rule = rule[1];
      j = 0;
    }
    for (var pl=rule.length; j < pl; j++) {
      var prop = rule[j];
      propStr += prop[0] + ':' + prop[1] + (prop[2] ? ' !important' : '') + ';\n';
    }
    s.insertRule(selector + '{' + propStr + '}', s.cssRules.length);
  }
}

Specification

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) 8 (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

See also