Skip to content

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

Closed

Description

@majido

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

  1. fantasai commented on Apr 11, 2018

    @fantasai
    Collaborator

    Yes, the visibility thing is about the other axis, it's the case described in the drawing in https://drafts.csswg.org/css-scroll-snap/#snap-scope -- you can't be “snapped” to a thing you can't see. But if there's a snap position further off-screen and when you snap to it, the box is visible, that's fine.

  2. fantasai commented on Apr 11, 2018

    @fantasai
    Collaborator

    In other words, https://drafts.csswg.org/css-scroll-snap/#snap-scope says that the state of being snapped requires that the thing you're snapped to must be visible. It doesn't say that you can't snap to a thing which is currently off-screen but would become on-screen after you have snapped to it.

  3. tabatkins commented on Jun 21, 2018

    @tabatkins
    Member

    Okay, we just rephrased that section a bit:

    Since the purpose of scroll snapping is to align content within the viewport for optimal viewing, a scroll position cannot be considered a valid snap position if snapping to it would leave the contributing snap area entirely outside the snapport, even if it otherwise satisfies the required alignment of the snap area.

    Does this work for you?

  4. majido commented on Aug 3, 2018

    @majido
    ContributorAuthor

    The proposed wording above sounds good to me!

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

Metadata

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