Skip to content

[css-scroll-snap-1] Clarification of interaction between mandatory strictness and visibility requirement #2526

Closed
@majido

Description

I need clarification on how mandatory strictness interacts with visibility requirement for validity of snap position.

Relevant spec text

mandatory:

If specified on a scroll container, the scroll container is required to be snapped to a snap position when there are no active scrolling operations. If a reachable snap position exists then the scroll container must snap at the termination of a scroll (if none exist then no snapping occurs).

This is followed by a note which in particular explains this situation:

if authors assign mandatory snapping to non-adjacent siblings, content in between can become inaccessible in cases where it is longer than the screen.

Later in the specification i.e., Scoping Valid Snap Positions to Visible Boxes, limits valid snap positions from snap areas that at least some part of it is within the snapport.

My Understanding

Here is how I understand a generic algorithm that implements this will work:

  1. Compute a set of valid snap position only including positions contributed from snap areas that are considered visible
  2. If the above set is empty, we should not snap even with mandatory strictness
  3. Otherwise, we should choose a snap position and snap.

Issue

If this is the right understanding, I think the none normative text is confusing and incorrect. In particular, larger than snapport content between two adjacent snap points does not become inaccessible even when with mandatory strictness. This is because if user scroll ends in that area, those snap positions are outside snapports and thus not valid, therefore we do not snap.

Perhaps I am missing something.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions