# CSSOM CSSOM.js is a CSS parser written in pure JavaScript. It is also a partial implementation of [CSS Object Model](http://dev.w3.org/csswg/cssom/). CSSOM.parse("body {color: black}") -> { cssRules: [ { selectorText: "body", style: { 0: "color", color: "black", length: 1 } } ] } ## [Parser demo](http://nv.github.com/CSSOM/docs/parse.html) Works well in Google Chrome 6+, Safari 5+, Firefox 3.6+, Opera 10.63+. Doesn't work in IE < 9 because of unsupported getters/setters. To use CSSOM.js in the browser you might want to build a one-file version that exposes a single `CSSOM` global variable: ➤ git clone https://github.com/NV/CSSOM.git ➤ cd CSSOM ➤ node build.js build/CSSOM.js is done To use it with Node.js or any other CommonJS loader: ➤ npm install cssom ## Don’t use it if... You parse CSS to mungle, minify or reformat code like this: ```css div { background: gray; background: linear-gradient(to bottom, white 0%, black 100%); } ``` This pattern is often used to give browsers that don’t understand linear gradients a fallback solution (e.g. gray color in the example). In CSSOM, `background: gray` [gets overwritten](http://nv.github.io/CSSOM/docs/parse.html#css=div%20%7B%0A%20%20%20%20%20%20background%3A%20gray%3B%0A%20%20%20%20background%3A%20linear-gradient(to%20bottom%2C%20white%200%25%2C%20black%20100%25)%3B%0A%7D). It does **NOT** get preserved. If you do CSS mungling, minification, or image inlining, considere using one of the following: * [postcss](https://github.com/postcss/postcss) * [reworkcss/css](https://github.com/reworkcss/css) * [csso](https://github.com/css/csso) * [mensch](https://github.com/brettstimmerman/mensch) ## [Tests](http://nv.github.com/CSSOM/spec/) To run tests locally: ➤ git submodule init ➤ git submodule update ## [Who uses CSSOM.js](https://github.com/NV/CSSOM/wiki/Who-uses-CSSOM.js)