New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
majido opened this Issue Apr 10, 2018 · 4 comments

Comments

Projects
None yet
3 participants
@majido
Contributor

majido commented Apr 10, 2018

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.

@fantasai

This comment has been minimized.

Contributor

fantasai commented Apr 11, 2018

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.

@fantasai

This comment has been minimized.

Contributor

fantasai commented Apr 11, 2018

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.

@tabatkins

This comment has been minimized.

Member

tabatkins commented Jun 21, 2018

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?

@majido

This comment has been minimized.

Contributor

majido commented Aug 3, 2018

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