LGTM3 (there are two LGTM1 so next is 3). Note Alex' request.
/Daniel
On 2025-07-02 17:26, Alex Russell wrote:
Per conversation at today's API OWNERS, LGTM1 contingent on there
being a stand-alone explainer and example code. Bonus points for
getting motivating example code into the spec too.
Best,
Alex
On Wednesday, June 25, 2025 at 1:20:00 PM UTC-7 Robert Flack wrote:
I've updated the chromestatus motivation to include a rough
example of what developers do today compared to what this API
enables. In particular, without this API developers building
carousel components need to calculate the scroll offset to bring a
particular slide into view and then call scrollTo or set scrollTop
/ scrollLeft on the scroll container directly in order to prevent
highjacking the user's scroll (which can be observed in my demo
link https://output.jsbin.com/rihozik
<https://output.jsbin.com/rihozik> in a browser which doesn't
support the feature). e.g.
slideList.addEventListener('click', (evt) => {
const target = evt.target.targetSlide;
let scrollLeft = target.offsetLeft;
const snapAlignInline =
getComputedStyle(target).scrollSnapAlignInline;
if (snapAlignInline != 'left') {
// Adjust scrollLeft for element's snap alignment
}
// Also account for scroll padding, and scroll margin
slideScroller.scrollTo({left: scrollLeft, behavior: 'smooth'});
});
With this API, developers can call scrollIntoView on the target of
their buttons, e.g.
slideList.addEventListener('click', (evt) => {
// scrollIntoView will automatically determine the position.
evt.target.targetSlide.scrollIntoView({container: 'nearest',
behavior: 'smooth'});
});
This has been highly upvoted on the github issue for exactly this
reason - it enables developers to use scrollIntoView for these use
cases without creating a disruptive experience.
On Wed, Jun 25, 2025 at 11:25 AM Alex Russell
<slightly...@chromium.org> wrote:
Is there an explainer or a motivating example anywhere?
Best,
Alex
On Thursday, June 19, 2025 at 9:24:22 AM UTC-7 Chromestatus wrote:
Contact emails
fla...@chromium.org
Explainer
None
Specification
https://drafts.csswg.org/cssom-view/#dom-scrollintoviewoptions-container
<https://drafts.csswg.org/cssom-view/#dom-scrollintoviewoptions-container>
Summary
The ScrollIntoViewOptions container option allows
developers to perform a scrollIntoView only scrolling the
nearest ancestor scroll container. For example, the
following snippet only scrolls the scroll container of
target to bring target into view, but will not scroll all
of the scroll containers to the viewport:
target.scrollIntoView({container: 'nearest'});
Blink component
Blink>Scroll
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EScroll%22>
TAG review
https://github.com/w3ctag/design-reviews/issues/1105
<https://github.com/w3ctag/design-reviews/issues/1105>
TAG review status
Pending
Risks
Interoperability and Compatibility
None
/Gecko/: No signal
(https://github.com/mozilla/standards-positions/issues/1237
<https://github.com/mozilla/standards-positions/issues/1237>)
/WebKit/: No signal
(https://github.com/WebKit/standards-positions/issues/502
<https://github.com/WebKit/standards-positions/issues/502>)
/Web developers/: No signals
/Other signals/:
Ergonomics
None that I can think of.
Activation
It's possible to just use this feature as a progressive
enhancement though I expect in practice most developers
will want to polyfill falling back to scrollTo on
non-supporting browsers. Detection of the feature can be
done in Javascript by doing a test scrollIntoView, and if
done in a position: fixed descendant should prevent
highjacking the user's scroll.
WebView application risks
Does this intent deprecate or change behavior of existing
APIs, such that it has potentially high risk for Android
WebView-based applications?
None
Debuggability
None
Will this feature be supported on all six Blink
platforms (Windows, Mac, Linux, ChromeOS, Android,
and Android WebView)?
Yes
Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
Yes
https://wpt.fyi/results/css/cssom-view/scrollIntoView-container.html?label=experimental&label=master&aligned
<https://wpt.fyi/results/css/cssom-view/scrollIntoView-container.html?label=experimental&label=master&aligned>
Flag name on about://flags
Experimental web platform features
Finch feature name
ScrollIntoViewNearest
Rollout plan
Will ship enabled for all users
Requires code in //chrome?
False
Measurement
Measured as web feature ScrollIntoViewContainerNearest
Sample links
https://output.jsbin.com/rihozik
<https://output.jsbin.com/rihozik>
Estimated milestones
Shipping on desktop 140
DevTrial on desktop 138
Shipping on Android 140
DevTrial on Android 138
Shipping on WebView 140
Anticipated spec changes
Open questions about a feature may be a source of future
web compat or interop issues. Please list open issues
(e.g. links to known github issues in the project for the
feature specification) whose resolution may introduce web
compat/interop risk (e.g., changing to naming or structure
of the API in a non-backward-compatible way).
In https://github.com/w3c/csswg-drafts/issues/9452
<https://github.com/w3c/csswg-drafts/issues/9452> there
was consideration of passing an element to contain the
scroll to. As discussed in
https://github.com/w3c/csswg-drafts/issues/9452#issuecomment-2607879021
<https://github.com/w3c/csswg-drafts/issues/9452#issuecomment-2607879021>
we think this is easily added in a backwards compatible
way if there is a need for it.
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5100036528275456?gate=5140738792488960
<https://chromestatus.com/feature/5100036528275456?gate=5140738792488960>
Links to previous Intent discussions
Intent to Prototype:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67ab83a2.2b0a0220.2eae12.088a.GAE%40google.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67ab83a2.2b0a0220.2eae12.088a.GAE%40google.com>
This intent message was generated by Chrome Platform
Status <https://chromestatus.com>.
--
You received this message because you are subscribed to the Google
Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to blink-dev+unsubscr...@chromium.org.
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7d48c206-9e1c-4b68-9ff9-1369c0f08ae8n%40chromium.org
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7d48c206-9e1c-4b68-9ff9-1369c0f08ae8n%40chromium.org?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to blink-dev+unsubscr...@chromium.org.
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/5b7b4629-e7ea-40f1-8be7-316fb4420e84%40gmail.com.