code: function(obj, value) {
          var key,
              elem = this._element,
              val,
              style = elem.style;
  
          //if an object passed
          if (typeof obj === "object") {
              for (key in obj) {
                  if (!obj.hasOwnProperty(key)) continue;
                  val = obj[key];
                  this._setCssProperty(style, key, val);
              }
          } else {
              //if a value is passed, set the property
              if (value) {
                  this._setCssProperty(style, obj, value);
              } else {
                  //otherwise return the computed property
                  return Crafty.domHelper.getStyle(elem, obj);
              }
          }
  
          this.trigger("Invalidate");
  
          return this;
      }
docs: @
  #.css
  @comp DOM
  @kind Method
  @trigger SetStyle - for each style that is set - string - propertyName
  
  @sign public css(String property, String value)
  @param property - CSS property to modify
  @param value - Value to give the CSS property
  
  @sign public  css(Object map)
  @param map - Object where the key is the CSS property and the value is CSS value
  
  Apply CSS styles to the element.
  
  Can pass an object where the key is the style property and the value is style value.
  
  For setting one style, simply pass the style as the first argument and the value as the second.
  
  The notation can be CSS or JS (e.g. `border-radius` or `borderRadius`).
  
  To return a value, pass the property.
  
  Note: For entities with "Text" component, some css properties are controlled by separate functions
  `.textFont()`, `.textAlign()` and `.textColor()`.  When possible, prefer text-specific methods, since
  they will work for non-DOM text.
  See the Text component for details.
  
  @example
  ~~~
  this.css({'border': '1px solid black', 'text-decoration': 'line-through'});
  this.css("textDecoration", "line-through");
  this.css("text-Decoration"); //returns line-through
  ~~~