Skip to content

Allow dynamically changing rootMargin #428

Open

Description

@zcorpan

In whatwg/html#5510 I'm trying to specify <img loading=lazy> in terms of IntersectionObserver as per discussion in whatwg/html#5236

The desired behavior for lazy-loading is to dynamically change the rootMargin in response to things like scrolling and network changes. See whatwg/html#5408 (comment)

Since IntersectionObserver only allows setting the rootMargin upon initialization, this would require one of

  • Register a new IntersectionObserver and observe all the same elements as the old one, and get rid of the old one. This seems bad, but I assume is what a JS polyfill would have to do?
  • Have the browser internally update the rootMargin even though the public API doesn't allow for it.

I think the second option seems better, but per the extensible web manifesto we try to have web features be explained by lower-level APIs without having special magic that isn't accessible to web developers.

Are there issues with modifying the rootMargin after initialization?

Activity

  1. domfarolino commented on May 8, 2020

    @domfarolino
    Member

    This seems reasonable, but also I don't think it should block whatwg/html#5510

  2. zcorpan commented on May 18, 2020

    @zcorpan
    Author

    Agreed. I think it doesn't need to block fixing whatwg/html#5408 either, we could temporarily violate the extensible web manifesto here. But fixing this first certainly seems nicer to me!

  3. emilio commented on Oct 19, 2020

    @emilio
    Collaborator

    I don't think there'd be an issue allowing this.

  4. zcorpan commented on Oct 29, 2020

    @zcorpan
    Author

    There will be a TPAC breakout session tomorrow (30 October 14:00–15:00 UTC) to discuss this issue.

    https://www.w3.org/2020/10/TPAC/breakout-schedule.html#intersectionobserver

  5. zcorpan commented on Oct 30, 2020

    @zcorpan
    Author

    The breakout starts in ~20 minutes. Agenda and meeting notes here: https://docs.google.com/document/d/1SXwbMiwOUkLPXSM_klk4q9mFEanbIH8IAgTM80cCMXU/edit?usp=sharing

  6. asakusuma commented on Sep 22, 2021

    @asakusuma

    @zcorpan I read the meeting notes, has someone proposed an API here to allow rootMargin mutation?

    Another use case here is top navbars that change size.

  7. zcorpan commented on Sep 23, 2021

    @zcorpan
    Author

    @asakusuma The API we gravitated towards was to allow assigning to rootMargin (and @smfr suggested also allow changing thresholds for symmetry).

    In metonym/svelte-intersection-observer#12 (comment) @dysfunc also explains a use case for this feature. The implementation in svelte-intersection-observer validates that there is a web developer need for this feature.

    cc @chrishtr

  8. added a commit that references this issue on Oct 21, 2021
    24fe6a1
  9. zcorpan commented on Oct 21, 2021

    @zcorpan
    Author

    PRs: #485 (thresholds), #486 (rootMargin)

  10. added a commit that references this issue on Oct 26, 2021
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