CSS Object Model (CSSOM)
========================

The **CSS Object Model** is a set of APIs allowing the manipulation of CSS from JavaScript. It is much like the DOM, but for the CSS rather than the HTML. It allows users to read and modify CSS style dynamically.

The values of CSS are represented untyped, that is using `String` objects.

Reference
---------

* `AnimationEvent`
* `CaretPosition`
* `CSS`
* `CSSConditionRule`
* `CSSCounterStyleRule`
* `CSSFontFaceRule`
* `CSSFontFeatureValuesMap`
* `CSSFontFeatureValuesRule`
* `CSSGroupingRule`
* `CSSImportRule`
* `CSSKeyframeRule`
* `CSSKeyframesRule`
* `CSSMarginRule`
* `CSSMediaRule`
* `CSSNamespaceRule`
* `CSSPageRule`
* `CSSRule`
* `CSSRuleList`
* `CSSStyleDeclaration`
* `CSSStyleSheet`
* `CSSStyleRule`
* `CSSSupportsRule`
* `FontFace`
* `FontFaceSet`
* `FontFaceSetLoadEvent`
* `MediaList`
* `MediaQueryList`
* `MediaQueryListEvent`
* `Screen`
* `StyleSheet`
* `StyleSheetList`
* `TransitionEvent`

Several other interfaces are also extended by the CSSOM-related specifications: `Document`, `Window`, `Element`, `HTMLElement`, `HTMLImageElement`, `Range`, `MouseEvent`, and `SVGElement`.

### CSS Typed Object Model 
Experimental

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

* `CSSImageValue` 
Experimental
* `CSSKeywordValue` 
Experimental
* `CSSMathInvert` 
Experimental
* `CSSMathMax` 
Experimental
* `CSSMathMin` 
Experimental
* `CSSMathNegate` 
Experimental
* `CSSMathProduct` 
Experimental
* `CSSMathSum` 
Experimental
* `CSSMathValue` 
Experimental
* `CSSMatrixComponent` 
Experimental
* `CSSNumericArray` 
Experimental
* `CSSNumericValue` 
Experimental
* `CSSPerspective` 
Experimental
* `CSSPositionValue` 
Experimental
* `CSSRotate` 
Experimental
* `CSSScale` 
Experimental
* `CSSSkew` 
Experimental
* `CSSSkewX` 
Experimental
* `CSSSkewY` 
Experimental
* `CSSStyleValue` 
Experimental
* `CSSTransformComponent` 
Experimental
* `CSSTransformValue` 
Experimental
* `CSSTranslate` 
Experimental
* `CSSUnitValue` 
Experimental
* `CSSUnparsedValue` 
Experimental
* `CSSVariableReferenceValue` 
Experimental
* `StylePropertyMap` 
Experimental
* `StylePropertyMapReadOnly` 
Experimental
### Obsolete CSSOM interfaces 
Deprecated

**Deprecated:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

* `CSSPrimitiveValue` 
Deprecated
* `CSSValue` 
Deprecated
* `CSSValueList` 
Deprecated
Tutorials
---------

* Determining the dimensions of elements
* Managing screen orientation
Specifications
--------------

| Specification |
| --- |
| CSS Object Model (CSSOM)  |
| CSSOM View Module  |
| CSS Typed OM Level 1  |

Browser compatibility
---------------------

All these features have been added little by little over the years to the different browsers: it was a quite complex process that can't be summarized in a simple table. Please refer to the specific interfaces for its availability.

See also
--------

* Document Object Model (DOM)
* Houdini APIs