@@ -667,6 +667,83 @@ Snapping Mechanics {#snap-concepts}
667667 to ensure a minimum reasonable behavior that authors can depend on
668668 when designing their interfaces with scroll-snapping in mind.
669669
670+
671+ <!--
672+ ████████ ██ ██ ████████ ████████ ██████
673+ ██ ██ ██ ██ ██ ██ ██ ██
674+ ██ ████ ██ ██ ██ ██
675+ ██ ██ ████████ ██████ ██████
676+ ██ ██ ██ ██ ██
677+ ██ ██ ██ ██ ██ ██
678+ ██ ██ ██ ████████ ██████
679+ -->
680+
681+ Types of Scrolling Methods {#scroll-types}
682+ ------------------------------------------
683+
684+ When a page is scrolled,
685+ the action is performed with
686+ an intended end position
687+ and/or an intended direction.
688+ Each combination of these two things
689+ defines a distinct category of scrolling,
690+ which can be treated slightly differently
691+
692+ : <dfn export local-lt="explicit" lt="explicit scroll">explicit scrolling</dfn>
693+ :: A scroll is <a>explicit</a>
694+ if it has an intended end position,
695+ but no intended direction.
696+ <div class="example">
697+ Common examples include methods such as:
698+
699+ * a panning gesture,
700+ released without momentum
701+ * manipulating the scrollbar "thumb" explicitly
702+ * programmatically scrolling via APIs such as {{Window/scrollTo()}}
703+ * tabbing through the document's focusable elements
704+ * navigating to an anchor within the page
705+ </div>
706+
707+ : <dfn export local-lt="distance-based" lt="distance scroll">distance scrolling</dfn>
708+ :: A scroll is <a>distance-based</a>
709+ if it has both an intended end position
710+ and an intended direction.
711+
712+ <div class="example">
713+ Common examples include:
714+
715+ * a "fling" gesture,
716+ interpreted with momentum
717+ * programmatically scrolling via APIs such as {{Window/scrollBy()}}
718+ </div>
719+
720+ This category includes <dfn lt="inertial scroll|inertial">inertial scrolling</dfn> ,
721+ which are scroll gestures interpreted with momentum
722+ that carries the scroll beyond user's initial gesture,
723+ whose “intended” end position might be implicitly determined by the UA's scrolling physics,
724+ but whose effective distance is derived from the strength of the user's fling.
725+ The scroll position that an <a>inertial</a> scroll would naturally land on
726+ without further intervention is its <dfn noexport>natural end-point</dfn> .
727+
728+ : <dfn export local-lt="directional" lt="directional scroll">directional scrolling</dfn>
729+ :: A scroll is <a>directional</a> if it has an intended direction,
730+ but no intended end point.
731+ <div class="example">
732+ Common examples include:
733+
734+ * pressing an arrow key on the keyboard
735+ * a swiping gesture interpreted as a fixed (rather than inertial) scroll
736+ </div>
737+
738+ Additionally, because page layouts usually align things vertically and/or horizontally,
739+ UAs sometimes <dfn export>axis-lock</dfn> a scroll when its direction
740+ is sufficiently vertical or horizontal.
741+ An <a>axis-locked</a> scroll is bound to only scroll along that axis.
742+ This prevents,
743+ for example,
744+ a <em> nearly</em> horizontal fling gesture from gradually drifting up or down as well,
745+ because it is very difficult to fling in a precisely horizontal line.
746+
670747<!--
671748 ██ ████████ ███████ ████████
672749 ████ ██ ██ ██ ██ ██ ██
0 commit comments