README.mdown
1 # CSSOM 2 3 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/). 4 5 CSSOM.parse("body {color: black}") 6 -> { 7 cssRules: [ 8 { 9 selectorText: "body", 10 style: { 11 0: "color", 12 color: "black", 13 length: 1 14 } 15 } 16 ] 17 } 18 19 20 ## [Parser demo](http://nv.github.com/CSSOM/docs/parse.html) 21 22 Works well in Google Chrome 6+, Safari 5+, Firefox 3.6+, Opera 10.63+. 23 Doesn't work in IE < 9 because of unsupported getters/setters. 24 25 To use CSSOM.js in the browser you might want to build a one-file version that exposes a single `CSSOM` global variable: 26 27 ➤ git clone https://github.com/NV/CSSOM.git 28 ➤ cd CSSOM 29 ➤ node build.js 30 build/CSSOM.js is done 31 32 To use it with Node.js or any other CommonJS loader: 33 34 ➤ npm install cssom 35 36 ## Don’t use it if... 37 38 You parse CSS to mungle, minify or reformat code like this: 39 40 ```css 41 div { 42 background: gray; 43 background: linear-gradient(to bottom, white 0%, black 100%); 44 } 45 ``` 46 47 This pattern is often used to give browsers that don’t understand linear gradients a fallback solution (e.g. gray color in the example). 48 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). 49 It doesn't get preserved. 50 51 If you do CSS mungling, minification, image inlining, and such, CSSOM.js is no good for you, considere using one of the following: 52 53 * [postcss](https://github.com/postcss/postcss) 54 * [reworkcss/css](https://github.com/reworkcss/css) 55 * [csso](https://github.com/css/csso) 56 * [mensch](https://github.com/brettstimmerman/mensch) 57 58 59 ## [Tests](http://nv.github.com/CSSOM/spec/) 60 61 To run tests locally: 62 63 ➤ git submodule init 64 ➤ git submodule update 65 66 67 ## [Who uses CSSOM.js](https://github.com/NV/CSSOM/wiki/Who-uses-CSSOM.js)