5

Web Animations 是一个新的 w3c 规范,只是为了清楚我们在说什么。无论哪种方式,我都想平滑地滚动到某个元素。使用 jQuery 的Animate函数这总是很容易的,但对于 Web 动画,这似乎并不那么简单。有没有办法使用 Web 动画计时功能并将它们应用于 DOM 属性(scrollTop)。我问的原因是我不想加载整个(额外的)库只是为了使用它的插值函数,同时在我的应用程序的其余部分使用不同的技术/库。

4

2 回答 2

2

为了记录,从伊冯娜的回答开始,使用核心动画:

<link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../bower_components/core-animation/core-animation.html">

<polymer-element name="animated-scroll">
  <template>

    <style>
      #scroller {
        height: 300px;
        overflow-y: scroll;
      }
    </style>
    <button on-tap="{{animate}}">Scroll it</button>
    <div id="scroller">
      <content></content>
    </div>
    <core-animation id="animation" duration="400" easing="ease-in-out"></core-animation>

  </template>
  <script>
    (function () {

      Polymer({
        animate: function (e) {
          var start = this.$.scroller.scrollTop;
          var end = 500; // px
          var delta = end - start;
          this.$.animation.target = this.$.scroller;
          this.$.animation.customEffect = function (timeFraction, target, animation) {
            target.scrollTop = start + delta * timeFraction;
          };
          this.$.animation.play();
        }
      });

    })();
  </script>
</polymer-element>
于 2014-11-10T20:32:54.253 回答
2

您可以使用自定义效果来制作动画scrollTop,例如

var a = new Animation(el, function(time) {
    el.scrollTop = el.scrollTop + time * 500;
}, 1000);
于 2014-11-10T18:49:38.903 回答