示例#1
0
    transition.oldContainer.parentNode.removeChild(transition.oldContainer)
    resolve(transition)
  })
})

// Sample Transition:
const animate = transition => new Promise((resolve, reject) => {
  transition.newContainer.setAttribute("style", "visibility: visible; opacity: 1;");
  resolve(transition)
})

const finish = transition => {
  transition.deferred.resolve()
}

const customTransition = Barba.BaseTransition.extend({
  start: function() {
    loadPage(this)
    .then(animate)
    .then(finish)
  }
})

const transition = () => {
  // this pulls the content when user hovers, making it super fast
  Barba.Prefetch.init()
  Barba.Pjax.init()
  Barba.Pjax.getTransition = () => customTransition
}

transition()
示例#2
0
const FadeInOutTransition = Barba.BaseTransition.extend({
  direction: 1,

  start: function() {
    this.setDirection();

    Promise
    .all([this.newContainerLoading, this.fadeOut()])
    .then(this.fadeIn.bind(this));
  },

  fadeOut: function() {
    const deferred = Barba.Utils.deferred();

    TweenMax.to(this.oldContainer, 0.3, {
      opacity: 0,
      x: -40 * this.direction,
      ease: Power2.easeIn,
      onComplete: () => {
        window.scroll(0, 0);
        deferred.resolve();
      }
    });

    return deferred.promise;
  },

  fadeIn: function() {
    this.done();
    setChapterLink();

    TweenMax.fromTo(this.newContainer, 0.3,
      {
        opacity: 0,
        x: 40 * this.direction
      },
      {
        opacity: 1,
        x: 0,
        ease: Power2.easeOut,
      }
    );
  },

  setDirection: function() {
    const oldChap = Barba.HistoryManager.prevStatus().url.split('/').slice(-2, -1)[0].replace('chapter', '');
    const newChap = Barba.HistoryManager.currentStatus().url.split('/').slice(-2, -1)[0].replace('chapter', '');
    this.direction = newChap - oldChap;
  }
});