code: function getCss ( elem, properties, opts ) {
          var i, length, name,
              props = {},
              _window = ( elem.ownerDocument.defaultView || elem.ownerDocument.parentWindow ),
              computedStyles = _useGetComputedStyle ? _window.getComputedStyle( elem, null ) : elem.currentStyle;
  
          opts || ( opts = {} );
  
          if ( ! $.isArray( properties ) ) properties = [ properties ];
          length = properties.length;
  
          for ( i = 0; i < length; i++ ) {
              name = properties[i];
              props[name] = $.css( elem, name, false, computedStyles );
              if ( opts.toLowerCase && props[name] && props[name].toLowerCase ) props[name] = props[name].toLowerCase();
              if ( opts.toFloat ) props[name] = parseFloat( props[name] );
          }
  
          return props;
      }
docs: Returns the computed style for a property, or an array of properties, as a hash.
  
  Building a CSS properties hash this way can be significantly faster than the more convenient, conventional jQuery
  approach, $( elem ).css( propertiesArray ).
  
  ATTN
  ====
  
  We are using an internal jQuery API here: $.css(). The current signature was introduced in jQuery 1.9.0. It may
  break without warning with any change of the minor version.
  
  For that reason, the $.css API is monitored by the tests in api.jquery.css.spec.js which verify that it works as
  expected.
  
  @param {HTMLElement}     elem
  @param {string|string[]} properties
  @param {Object}          [opts]
  @param {boolean}         [opts.toLowerCase=false]  ensures return values in lower case
  @param {boolean}         [opts.toFloat=false]      converts return values to numbers, using parseFloat
  
  @returns {Object}        property names and their values