- From: Stephen McGruer via GitHub <sysbot+gh@w3.org>
- Date: Thu, 19 Sep 2019 05:41:44 +0000
- To: public-css-archive@w3.org
stephenmcgruer has just created a new issue for https://github.com/w3c/csswg-drafts:
== Animations end up finishing at scroll-position == max ==
Even after fixing w3c/scroll-animations#19 , there is still an issue with (probably) unexpected behavior for web authors, relating to full-scroller ScrollTimeline animations.
Consider the following:
```javascript
const scroll_timeline = new ScrollTimeline({ scrollSource: scroller });
const effect = new KeyframeEffect(target, keyframes, { duration: 1000 });
const anim = new Animation(effect, scroll_timeline);
anim.play();
scroller.scrollTop = max_scroll_top; // precalculated
```
At this point, [currentTime](https://wicg.github.io/scroll-animations/#current-time-algorithm) is calculated as:
```javascript
= (current scroll offset - startScrollOffset) / (endScrollOffset - startScrollOffset) × effective time range
= (max_scroll_offset - 0) / (max_scroll_offset - 0) * effective time range
= 1 * effective time range
= 1 * 1000
= 1000
```
But per Web Animations, once the time is at the [target effect end](https://drafts.csswg.org/web-animations-1/#target-effect-end), the animations [is finished](https://drafts.csswg.org/web-animations-1/#update-an-animations-finished-state) and (assuming no fill mode) it will go back to the non-animating style.
A 'real world' example for this could be a sticky header bar on your website (although in that simple case you should really be using `position: sticky`!). When the user scrolled all the way to the bottom, the header bar would suddenly disappear as its animation finished.
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/4341 using your GitHub account
Received on Thursday, 19 September 2019 05:41:45 UTC