Using dynamic styling information
The CSS Object Model (CSSOM), part of the DOM, exposes specific interfaces allowing manipulation of a wide amount of information regarding CSS. Initially defined in the DOM Level 2 Style recommendation, these interfaces forms now a specification, CSS Object Model (CSSOM) which aims at superseding it.
In many cases, and where possible, it is best practice to dynamically manipulate classes via the
style object exposes the
Stylesheet and the
CSSStylesheet interfaces. Those interfaces contain members like
parentStyleSheet for accessing and manipulating the individual style rules that make up a CSS stylesheet.
To get to the
style objects from the
document, you can use the
Document.styleSheets property and access the individual objects by index (e.g.,
document.styleSheets is the first stylesheet defined for the document, etc.).
style property (see also the section "DOM Style Object" below) can also be used to get and set the styles on an element. However, this property only returns style attributes that have been set in-line (e.g,
<td style="background-color: lightblue"> returns the string "
background-color:lightblue", or directly for that element using
element.style.propertyName, even though there may be other styles on the element from a stylesheet).
Also, when you set this property on an element, you override any styles that have been set elsewhere for that element's particular property you are setting. Setting the
border property, for example, will override settings made elsewhere for that element's
border property in the head section, or external style sheets. However, this will not affect any other property declarations for that element's styles, such as padding or margin or font, for example.
To change a particular element's style, you can adapt the following example for the element(s) you want to style.
getComputedStyle() method on the
document.defaultView object returns all styles that have actually been computed for an element.
style object represents an individual style statement. The style object is accessed from the
document or from the elements to which that style is applied. It represents the in-line styles on a particular element.
More important than the two properties noted here is the use of the
style object to set individual style properties on an element:
The media and type of the style may or may not be given.
Note that you can also change style of an element by getting a reference to it and then use its
setAttribute method to specify the CSS property and its value.
var el = document.getElementById('some-element'); el.setAttribute('style', 'background-color:darkblue;');
Be aware, however, that
setAttribute removes all other
style properties that may already have been defined in the element's
style object. If the
some-element element above had an in–line
style attribute of say
style="font-size: 18px", that value would be removed by the use of