---
title: CSS Object Model
slug: Web/API/CSS_Object_Model
tags:
  - API
  - CSSOM
  - NeedsTranslation
  - Reference
  - TopicStub
translation_of: Web/API/CSS_Object_Model
---
<p>{{DefaultAPISidebar('CSSOM')}}</p>

<p>The <strong>CSS Object Model</strong> is a set of APIs allowing to manipulate CSS from JavaScript. It is the pendant of DOM and HTML APIs, but for CSS. It allows to read and modify CSS style dynamically.</p>

<h2 id="Reference">Reference</h2>

<div class="index">
<ul>
 <li>{{domxref("AnimationEvent")}}</li>
 <li>{{domxref("CaretPosition")}}</li>
 <li>{{domxref("CSS")}}</li>
 <li>{{domxref("CSSCharsetRule")}}</li>
 <li>{{domxref("CSSConditionRule")}}</li>
 <li>{{domxref("CSSCounterStyleRule")}}</li>
 <li>{{domxref("CSSFontFaceRule")}}</li>
 <li>{{domxref("CSSFontFeatureValuesMap")}}</li>
 <li>{{domxref("CSSFontFeatureValuesRule")}}</li>
 <li>{{domxref("CSSGroupingRule")}}</li>
 <li>{{domxref("CSSImportRule")}}</li>
 <li>{{domxref("CSSKeyframeRule")}}</li>
 <li>{{domxref("CSSKeyframesRule")}}</li>
 <li>{{domxref("CSSMarginRule")}}</li>
 <li>{{domxref("CSSMediaRule")}}</li>
 <li>{{domxref("CSSNamespaceRule")}}</li>
 <li>{{domxref("CSSPageRule")}}</li>
 <li>{{domxref("CSSRule")}}</li>
 <li>{{domxref("CSSRuleList")}}</li>
 <li>{{domxref("CSSStyleSheet")}}</li>
 <li>{{domxref("CSSStyleDeclaration")}}</li>
 <li>{{domxref("CSSSupportsRule")}}</li>
 <li>{{domxref("CSSVariablesMap")}}</li>
 <li>{{domxref("CSSViewportRule")}}</li>
 <li>{{domxref("ElementCSSInlineStyle")}}</li>
 <li>{{domxref("GeometryUtils")}}</li>
 <li>{{domxref("GetStyleUtils")}}</li>
 <li>{{domxref("LinkStyle")}}</li>
 <li>{{domxref("MediaList")}}</li>
 <li>{{domxref("MediaQueryList")}}</li>
 <li>{{domxref("PseudoElement")}}</li>
 <li>{{domxref("Screen")}}</li>
 <li>{{domxref("StyleSheet")}}</li>
 <li>{{domxref("StyleSheetList")}}</li>
 <li>{{domxref("TransitionEvent")}}</li>
</ul>
</div>

<p>Several other interfaces are also extended by the CSSOM-related specifications: {{domxref("Document")}}, {{domxref("Window")}}, {{domxref("Element")}}, {{domxref("HTMLElement")}}, {{domxref("HTMLImageElement")}}, {{domxref("Range")}}, {{domxref("MouseEvent")}}, and {{domxref("SVGElement")}}.</p>

<h2 id="Tutorials">Tutorials</h2>

<ul>
 <li><a href="/en-US/docs/Determining_the_dimensions_of_elements">Determining the dimensions of elements</a> (it needs some updating as it was made in the DHTML/Ajax era).</li>
 <li><a href="/en-US/docs/WebAPI/Managing_screen_orientation">Managing screen orientation</a></li>
</ul>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
  <tr>
   <td>{{SpecName("CSSOM")}}</td>
   <td>{{Spec2("CSSOM")}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName("CSSOM View")}}</td>
   <td>{{Spec2("CSSOM View")}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName("Screen Orientation")}}</td>
   <td>{{Spec2("Screen Orientation")}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName("CSS3 Fonts")}}</td>
   <td>{{Spec2("CSS3 Fonts")}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName("CSS3 Animations")}}</td>
   <td>{{Spec2("CSS3 Animations")}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName("CSS3 Transitions")}}</td>
   <td>{{Spec2("CSS3 Transitions")}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName("CSS3 Variables")}}</td>
   <td>{{Spec2("CSS3 Variables")}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName("CSS3 Conditional")}}</td>
   <td>{{Spec2("CSS3 Conditional")}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName("CSS3 Device")}}</td>
   <td>{{Spec2("CSS3 Device")}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName("CSS3 Counter Styles")}}</td>
   <td>{{Spec2("CSS3 Counter Styles")}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility_notes">Browser compatibility notes</h2>

<p>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.</p>