Skip to content

Commit 108f071

Browse files
committed
[css-scroll-snap] Add scrolling types section.
1 parent 8401d61 commit 108f071

1 file changed

Lines changed: 77 additions & 0 deletions

File tree

css-scroll-snap/Overview.bs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)