src/dom/getStyle.js
function getStyle(element, key, isComputed, isolateUnits) {
  assertType(element, Node, false, 'Invalid element specified');
  if (typeof isComputed !== 'boolean') isComputed = false;
  if (typeof isolateUnits !== 'boolean') isolateUnits = false;

  let value = (isComputed) ? window.getComputedStyle(element, null).getPropertyValue(key) : element.style[key];
  let regex = new RegExp('^[+-]?[0-9]+.?([0-9]+)?(px|em|ex|%|in|cm|mm|pt|pc)$', 'i');

  if (value === '') return (isolateUnits ? { value: null, unit: null } : null);
  if (!isNaN(Number(value))) return (isolateUnits ? { value: Number(value), unit: null } : Number(value));

  if (regex.test(value)) {
    if (isolateUnits) {
      if (value.charAt(value.length-1) === '%') return { value: Number(value.substr(0, value.length-1)), unit: value.slice(-1) };
      return { value: Number(value.substr(0, value.length-2)), unit: value.slice(-2) };
    }
    else {
      return value;
    }
  }

  return (isolateUnits ? { value: value, units: null } : value);
}
function getStyle(element, key, isComputed, isolateUnits) {
  assertType(element, Node, false, 'Invalid element specified');
  if (typeof isComputed !== 'boolean') isComputed = false;
  if (typeof isolateUnits !== 'boolean') isolateUnits = false;

  let value = (isComputed) ? window.getComputedStyle(element, null).getPropertyValue(key) : element.style[key];
  let regex = new RegExp('^[+-]?[0-9]+.?([0-9]+)?(px|em|ex|%|in|cm|mm|pt|pc)$', 'i');

  if (value === '') return (isolateUnits ? { value: null, unit: null } : null);
  if (!isNaN(Number(value))) return (isolateUnits ? { value: Number(value), unit: null } : Number(value));

  if (regex.test(value)) {
    if (isolateUnits) {
      if (value.charAt(value.length-1) === '%') return { value: Number(value.substr(0, value.length-1)), unit: value.slice(-1) };
      return { value: Number(value.substr(0, value.length-2)), unit: value.slice(-2) };
    }
    else {
      return value;
    }
  }

  return (isolateUnits ? { value: value, units: null } : value);
}
function getStyle ( element , key , isComputed , isolateUnits ) { assertType ( element , Node , false , 'Invalid element specified' ) ; if ( typeof isComputed !== 'boolean' ) isComputed = false ; if ( typeof isolateUnits !== 'boolean' ) isolateUnits = false ; let value = ( isComputed ) ? window . getComputedStyle ( element , null ) . getPropertyValue ( key ) : element . style [ key ] ; let regex = new RegExp ( '^[+-]?[0-9]+.?([0-9]+)?(px|em|ex|%|in|cm|mm|pt|pc)$' , 'i' ) ; if ( value === '' ) return ( isolateUnits ? { value : null , unit : null } : null ) ; if ( ! isNaN ( Number ( value ) ) ) return ( isolateUnits ? { value : Number ( value ) , unit : null } : Number ( value ) ) ; if ( regex . test ( value ) ) { if ( isolateUnits ) { if ( value . charAt ( value . length - 1 ) === '%' ) return { value : Number ( value . substr ( 0 , value . length - 1 ) ) , unit : value . slice ( - 1 ) } ; return { value : Number ( value . substr ( 0 , value . length - 2 ) ) , unit : value . slice ( - 2 ) } ; } else { return value ; } } return ( isolateUnits ? { value : value , units : null } : value ) ; }
Gets the value of an inline CSS rule of a Node by its name.

@param {Node} element - Target element.
@param {string} key - Name of the CSS rule in camelCase.
@param {boolean} [isComputed=false] - Specifies whether the styles are
computed.
@param {boolean} [isolateUnits=false] - Specifies whether value and units are
separated. This affects the return
value type.

@return {*} Value of the style. If isolateUnits is set to true, this will
return an object containing both 'value' and 'unit' keys.

@alias module:requiem~dom.getStyle
Gets the value of an inline CSS rule of a Node by its name .