Skip to content

3.11.5

@jackdoyle jackdoyle tagged this 17 Mar 15:21
- IMPROVED: if you set up an animation with a ScrollTrigger based on a containerAnimation and it has a negative start position (happens BEFORE the containerAnimation), it will render it initially at the spot where the containerAnimation begins (to avoid a jump). See https://greensock.com/forums/topic/35184-gsap-horizontal-scroll-with-parallax-need-to-figure-the-first-element-parallax-position-before-the-scroller-pins-and-animation-starts/

- IMPROVED: if you try using MotionPathPlugin.getPositionOnPath() on a RawPath that hasn't had cacheRawPathMeasurements() on it, now it'll automatically call that for you rather than throwing an error.

- IMPROVED: GSDevTools is context-aware now.

- IMPROVED: Draggable now saves the target's original inline styles (transform/top/left) and then reverts them when its revert() method is called (and it works with gsap.matchMedia() and gsap.context()). See https://greensock.com/forums/topic/35287-gsapmatchmedia-draggable-not-reverting/

- IMPROVED: ScrollSmoother will automatically watch for when the content element resizes and check to see if the current scroll position is greater than the new maximum and adjust things accordingly. See https://greensock.com/forums/topic/32353-scrollsmoother-not-refresh-the-page-height-when-accordion-is-openclosed/#comment-179179

- IMPROVED: ScrollTrigger.normalizeScroll() will now automatically cancel its momentum-based scroll on mobile devices when it senses that something else changed the scroll (like if you do a scrollTo tween). It also cancels it when there's a touchmove event. See https://greensock.com/forums/topic/35970-scrolltrigger-makes-jump-on-mobile-vertical-fullscreen-slider/

- IMPROVED: better compatibility with worker and SSR environments by delaying the auto-registration of CSSPlugin internally if the window doesn't exist yet. See https://github.com/greensock/GSAP/issues/524

- FIXED: if you set a "speed" that's not 1 directly on a ScrollSmoother instance, the .offset() or scrollTo() methods wouldn't factor that into the results. See https://greensock.com/forums/topic/35108-problems-with-the-scrollsmoother-plug-in-speed-option-in-gsap-3114/

- FIXED: in some browsers (like Firefox), screen repaints weren't consistent (seemingly the scroll thread and main thread got out of sync sometimes) unless we put SOMETHING (anything, even an empty function) into the requestAnimationFrame() queue at all times. So ScrollTrigger does that now as a workaround.

- FIXED: ScrollTrigger.normalizeScroll() may still allow "jitter" in some cases like on Android with a pinType that's "transform"...but that has been resolved now. See https://greensock.com/forums/topic/35157-scrolltrigger-pinning-causes-jitter-when-using-touch-on-safari/

- FIXED: if you applied an onUpdate to a tween that's a containerAnimation for a ScrollTrigger, "this" (the scope) inside that function wouldn't properly refer to the animation instance itself.

- FIXED: a regression in 3.11.4 could cause ScrollSmoother to initially jump slightly (on the very first scroll movement). See https://greensock.com/forums/topic/35244-there-is-a-lag-with-page-scrolling-while-using-scrollsmoother/

- FIXED: if you set a negative delay on an animation and then invert the timeScale to a negative value and then change it again, it could adjust the startTime incorrectly. See https://greensock.com/forums/topic/35243-reversed-animation/

- FIXED: (regression in 3.11.4) if a ScrollSmoother was resized after being scrolled, it may jump to a scrolled position and back again (see https://greensock.com/forums/topic/35529-scrollsmoother-strange-behavior-when-resizing-a-window/)

- FIXED: if you right-click (context menu) on an Observer's target, it would act as though the pointer stays down (dragging) after the context menu is released. Now it'll ignore the event if its "button" value is truthy. See https://greensock.com/forums/topic/35505-strange-behaviour-with-observer/

- FIXED: if you apply snapping to a ScrollTrigger and dynamically recreate it after scrolling, it could incorrectly restore the scroll position. See https://greensock.com/forums/topic/35545-%F0%9F%9A%92-need-help-with-scrolltrigger-refresh-events

- FIXED: if a ScrollSmoother's content resized, it would [correctly] call a refresh() but any ScrollTriggers that had a scrub applied may inadvertently start again from their beginning at that point. See https://greensock.com/forums/topic/35536-smoothscroller-ignoremobileresize-for-non-touch-devices

- FIXED: if you set a "speed" on a ScrollSmoother instance (other than 1) and then toggle paused() true/false, it could render the page at the wrong position. See https://greensock.com/forums/topic/35612-scrollsmoother-speed-option-bug-in-gsap-3114/

- FIXED: a regression in 3.11.3 caused ScrollTriggers with a pinnedContainer and pin defined to sometimes not pin initially in a particular edge case.

- FIXED: a regression in 3.11.2 could cause ScrollTriggers with a numeric scrub value to initially jump to their starting position and then scrub on the very first onEnter. See https://greensock.com/forums/topic/35725-nested-scrolltrigger-doesnt-seem-to-be-initializing-properly

- FIXED: if you have a repeating timeline with yoyo: true and you also have a non-zero repeatDelay and repeatRefresh: true, it would skip the repeatRefresh See https://greensock.com/forums/topic/18961-positioning-elements-along-a-bezier-curve

- FIXED: if you set a repeat on a timeline that had repeatRefresh: true and it had an onStart callback, that onStart would be called on each iteration instead of only on the first one.

- FIXED: if you Flip.fit() an element that has 3D transforms (particular rotations), it could cause the matrix3d() to get re-interpreted in a way that'd change the mix of rotations/scales which would technically look exactly the same, so visually nothing would change but the values themselves could be different. See https://greensock.com/forums/topic/35803-using-flipfit-with-3d-rotation/#comment-179207

- FIXED: ScrollTrigger.maxScroll() won't return a negative value (like if the viewport is taller than the content).

- FIXED: if ScrollSmoother is applied to a page and the content resizes, pointer-events: none was temporarily set on the wrapper and then reverted to work around an iOS browser bug, but that could cause pointer events to fire again, like mouseenter. So we've opted for a different workaround in that case.

- FIXED: if ScrollTrigger.normalizeScroll() was enabled on a page that used ScrollSmoother with smoothTouch enabled, on touch devices it may intermittently seem like the scroll position isn't getting updated (temporarily). See https://greensock.com/forums/topic/35826-problems-with-scrollsmoother-3115-beta-on-touch-screen-devices/

- FIXED: if you animate a camelCased CSS variable in a from() or fromTo() animation, a regression in 3.11.0 could cause it to seem "stuck". See https://greensock.com/forums/topic/31518-how-to-get-after-pseudo-element/?do=findComment&comment=179817

- FIXED: if you define a containerAnimation on a ScrollTrigger and use a numeric value for "start", it wouldn't interpret that as a scroll position properly. If you use a relative value for "end" like "+=500" when the start is numeric, it wouldn't be interpreted properly either. See https://greensock.com/forums/topic/36004-horizontal-scroll-section-with-absolutely-positioned-sidebar-issues-with-resizing/

- FIXED: a ScrollTrigger that has a containerAnimation may not render at the correct position on the very first render after a refresh() (but scrolling even once would correct it). See https://greensock.com/forums/topic/36004-horizontal-scroll-section-with-absolutely-positioned-sidebar-issues-with-resizing/

- FIXED: if you apply a ScrollTrigger to a page that has no scrollable content (no scrollbar), but the ScrollTrigger adds pinSpacing that would create a scrollbar, it now adjusts for that scrollbar space (previously the pin-spacer may have a width that reflects the width of the viewport without the scrollbar). See https://greensock.com/forums/topic/36019-scrolltrigger-during-horizontal-scroll-border-is-hidden-under-scrollbar/

- FIXED: if you define a pinnedContainer on a ScrollTrigger and a ScrollTrigger.refresh() occurs (like on window resize) when scrolled beyond where the pinning occurs, the start/end of the ScrollTrigger may be miscalculated. See https://greensock.com/forums/topic/35987-scrolltoplugin-and-scrolltrigger-with-scrub-not-getting-along/?do=findComment&comment=180473

- FIXED: For ScrollTrigger.normalizeScroll() on an iOS device, in a very rare case (typically when the page is inside an iframe), scrolling could appear to vibrate very quickly between a "stuck" state and the "real" state.
Assets 2