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