使用Web动画设置动画DOM属性(scrollTop)

时间:2014-10-10 14:48:10

标签: javascript polymer web-animations

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

2 个答案:

答案 0 :(得分:2)

您可以使用Custom EffectsscrollTop制作动画,例如

var a = new Animation(el, function(time) {
    el.scrollTop = el.scrollTop + time * 500;
}, 1000);

答案 1 :(得分:2)

为了记录,从Yvonne的答案开始,使用核心动画:

<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>