function addVendorPrefix(styles) {
      const cache = {};

      // Decompose into cache registry
      styles.match(/([-A-Za-z]*)\w:\w*([A-Za-z0-9.\-\s]*)/gi).forEach(function(style) {
        const pair = style.split(':');
        const key = pair[0];

        switch (key) {
          case 'transition':
          case 'transform':
          case 'animation':
          case 'transition-duration':
          case 'animation-duration':
            cache[key] = cache['-webkit-' + key] = pair[1];
            break;
          default:
            cache[key] = pair[1];
        }
      });

      // Recompose full style object (as string)
      styles = '';
      angular.forEach(cache, function(value, key) {
        styles = styles + key + ':' + value + '; ';
      });

      return styles;
    }
Decompose styles, attached specific vendor prefixes
and recompose...
e.g.
   'transition:0.5s linear all; font-size:100px;'
becomes
   '-webkit-transition:0.5s linear all; transition:0.5s linear all; font-size:100px;'