code: function(target) {
      this.stop();
  
      let self = this,
          o = self.opts,
          el = self.el = createEl(null, {
              className: o.className
          });
  
      css(el, {
          position: o.position,
          width: 0,
          zIndex: o.zIndex,
          left: o.left,
          top: o.top
      });
  
      if (target) {
          target.insertBefore(el, target.firstChild || null);
      }
  
      el.setAttribute('role', 'progressbar');
      self.lines(el, self.opts);
  
      if (!useCssAnimations) {
      // No CSS animation support, use setTimeout() instead
          let i = 0,
              start = (o.lines - 1) * (1 - o.direction) / 2,
              alpha,
              fps = o.fps,
              f = fps / o.speed,
              ostep = (1 - o.opacity) / (f * o.trail / 100),
              astep = f / o.lines;
          (function anim() {
              i++;
              for (let j = 0; j < o.lines; j++) {
                  alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity);
  
                  self.opacity(el, j * o.direction + start, alpha, o);
              }
              self.timeout = self.el && setTimeout(anim, ~~(1000 / fps));
          })();
      }
      return self;
  }
docs: Adds the spinner to the given target element. If this instance is already
  spinning, it is automatically removed from its previous target b calling
  stop() internally.