diff --git a/src/scroll-timeline-base.js b/src/scroll-timeline-base.js index 593be39..428351b 100644 --- a/src/scroll-timeline-base.js +++ b/src/scroll-timeline-base.js @@ -669,7 +669,9 @@ export function calculateRange(phase, sourceMeasurements, subjectMeasurements, a let startOffset = undefined; let endOffset = undefined; - const targetIsTallerThanContainer = viewSize > sizes.containerSize ? true : false; + // Take inset into account when determining the scrollport size + const adjustedScrollportSize = sizes.containerSize - inset.start - inset.end; + const subjectIsLargerThanScrollport = viewSize > adjustedScrollportSize; switch(phase) { case 'cover': @@ -694,11 +696,11 @@ export function calculateRange(phase, sourceMeasurements, subjectMeasurements, a case 'entry-crossing': startOffset = coverStartOffset; - endOffset = targetIsTallerThanContainer ? containEndOffset : containStartOffset; + endOffset = subjectIsLargerThanScrollport ? containEndOffset : containStartOffset; break; case 'exit-crossing': - startOffset = targetIsTallerThanContainer ? containStartOffset : containEndOffset; + startOffset = subjectIsLargerThanScrollport ? containStartOffset : containEndOffset; endOffset = coverEndOffset; break; }