Thanks for the feedback Mateusz!

Also, I'm not sure how the margin is configured, but in our case only the
> next image is loaded.
>
 The margin is configured
<https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/frame/settings.json5;drc=bacaa805e405b7571f6e73be3649965a59c7e738;l=980>
based on the connection type.


> On Saturday, December 9, 2023 at 6:49:24 PM UTC+1 Casey Carroll wrote:
>
>> Hi all!
>>
>> This sounds like a great addition to lazy loading behavior. I'm wondering
>> if this change had an effect on a lazy loading strategy implemented on
>> REI.com.
>>
>> Prior to 121, images with loading="lazy" tucked away in our hamburger
>> menu did not download until the hamburger menu's visibility changed from
>> hidden to visible. In v121 and 122 the images now download on initial
>> render, ignoring visibility: hidden.
>>
>> I can achieve the old behavior by using display: none rather than
>> visibility: hidden. However, I wonder if there are other similar
>> implementations in the wild and if their lazy loading behavior will change
>> as people upgrade to v121.
>>
>> Expected behavior (v120 and older):
>> (Mobile viewports):
>> 1. With the network panel open and filters set to images and
>> "merch-zones", visit www.rei.com
>> 2. Notice empty network panel
>> 3. Click the hamburger menu
>> 4. Notice all merch-zones images download
>>
>> (Desktop viewports):
>> 1. With the network panel open and filters set to images and
>> "merch-zones", visit www.rei.com
>> 2. Notice empty network panel
>> 3. Click on "Gifts"
>> 4. Notice merch-zones/gifts/live.jpg image downloads
>>
>> I have also attached videos to explain the change.
>>
>> Thank you!
>>
>> On Tuesday, December 5, 2023 at 12:23:51 PM UTC-8 PhistucK wrote:
>>
>>> Well, that is debatable... Because the image is 0x0 before it is loaded
>>> and centered, it is technically not in the viewport, but I am not sure why
>>> it would be 0x0. I am changing the original snippet to this (untested, just
>>> more like what I have) -
>>> <div style="width: 100px; display: flex; justify-content: center;">
>>>  <div><img style="width: 100%;" loading="lazy"
>>> src="some-image.jpg"></div>
>>> </div>
>>> That extraneous <div> seems to cause this... I need to look into it. I
>>> got confusing results.
>>>
>>> ☆*PhistucK*
>>>
>>>
>>> On Tue, Dec 5, 2023 at 12:57 AM Traian Captan <tca...@chromium.org>
>>> wrote:
>>>
>>>> Thanks for the update!
>>>>
>>>> Since this involves a lazy loaded image, and you mentioned this is a
>>>> reduced test case, I wanted to check if the image is in viewport or out of
>>>> viewport in your test page?
>>>>
>>>> Regards,
>>>> Traian
>>>>
>>>>
>>>> On Sun, Dec 3, 2023 at 10:01 AM PhistucK <phis...@gmail.com> wrote:
>>>>
>>>>> When trying to generate a reduced test case, I found the underlying
>>>>> issue that explains the issue I was having -
>>>>> The image is centered and has a container with a fixed width with the
>>>>> image itself having a 100% width.
>>>>> This is just a snippet for illustrating the structure -
>>>>> <div style="width: 100px; display: flex; justify-content: center;">
>>>>>  <img style="width: 100%;" loading="lazy" src="some-image.jpg">
>>>>> </div>
>>>>>
>>>>> Issue - the image does not actually use the fixed width of the
>>>>> container (= 100%) until it is loaded.
>>>>> As a result, a 0x0 image is centered and it is not within the
>>>>> viewport, therefore not loaded.
>>>>>
>>>>> Chrome as well as Safari exhibit this behaviour, while Firefox gets it
>>>>> right.
>>>>>
>>>>> I will file an issue with the reduced test case for the
>>>>> no-dimensions-until-loaded issue.
>>>>>
>>>>>
>>>>>
>>>>> ☆*PhistucK*
>>>>>
>>>>>
>>>>> On Thu, Nov 30, 2023 at 5:33 PM Traian Captan <tca...@chromium.org>
>>>>> wrote:
>>>>>
>>>>>> Will do.
>>>>>> Would you mind sharing an example of the case you encountered so that
>>>>>> I can test it locally?
>>>>>>
>>>>>>
>>>>>> On Thu, Nov 30, 2023 at 2:34 AM PhistucK <phis...@gmail.com> wrote:
>>>>>>
>>>>>>> I hit a case where even when 5 - 10 pixels of the image is in the
>>>>>>> scrolling viewport, it is still not loaded, so hopefully it will take 
>>>>>>> care
>>>>>>> of it as well. Let me know when this is in canary and I can try and 
>>>>>>> test it
>>>>>>> out (at the moment I am not using lazy loading as a result). :)
>>>>>>>
>>>>>>> ☆*PhistucK*
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Nov 30, 2023 at 10:27 AM Traian Captan <tca...@chromium.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Rick,
>>>>>>>>
>>>>>>>> Yes. I uploaded a CL that increases the spacer size by 30px:
>>>>>>>> https://chromium-review.googlesource.com/c/chromium/src/+/5075126
>>>>>>>>
>>>>>>>> The tests are now failing as expected on Safari:
>>>>>>>>
>>>>>>>> https://wpt.fyi/results/html/semantics/embedded-content/the-img-element?label=pr_head&max-count=1&pr=43446
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Nov 30, 2023 at 12:14 AM Rick Byers <rby...@chromium.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Interesting. Could you try to improve the tests to capture the
>>>>>>>>> interop difference and ensure passing reflects full conformance to the
>>>>>>>>> spec? We rely on WPTs as our quantifiable measure of 
>>>>>>>>> interoperability...
>>>>>>>>>
>>>>>>>>> Rick
>>>>>>>>>
>>>>>>>>> On Thu, Nov 30, 2023 at 5:07 PM Traian Captan <tca...@chromium.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Thank you Rick!
>>>>>>>>>>
>>>>>>>>>> I did some investigating into why WebKit is passing some of the
>>>>>>>>>> new WPTs for lazy loaded images.
>>>>>>>>>> I think it might be because WebKit is considering the edge as
>>>>>>>>>> inclusive, while Blink and Gecko do not.
>>>>>>>>>> In the following example if the spacer height is 100px Safari
>>>>>>>>>> will report intersecting as true while Chrome and FireFox would 
>>>>>>>>>> report it
>>>>>>>>>> as false.
>>>>>>>>>> If the height is increased to 101px, all 3 browsers will
>>>>>>>>>> report the intersection as false.
>>>>>>>>>> <!DOCTYPE html>
>>>>>>>>>> <style>
>>>>>>>>>> #scroller { width: 100px; height: 100px; overflow: scroll;
>>>>>>>>>> background-color: gray; }
>>>>>>>>>> #spacer { width: 50px; height: 100px; }
>>>>>>>>>> #target { width: 50px; height: 50px; background-color: green; }
>>>>>>>>>> </style>
>>>>>>>>>>
>>>>>>>>>> <div id=scroller>
>>>>>>>>>> <div id=spacer></div>
>>>>>>>>>> <div id=target></div>
>>>>>>>>>> </div>
>>>>>>>>>>
>>>>>>>>>> <script>
>>>>>>>>>> let entries = [];
>>>>>>>>>>
>>>>>>>>>> window.onload = function() {
>>>>>>>>>> const observer = new IntersectionObserver(
>>>>>>>>>> callback,
>>>>>>>>>> {
>>>>>>>>>> rootMargin: "0px"
>>>>>>>>>> }
>>>>>>>>>> );
>>>>>>>>>> observer.observe(target);
>>>>>>>>>> };
>>>>>>>>>>
>>>>>>>>>> function callback(entries) {
>>>>>>>>>> console.log(`isIntersecting = ${entries[0].isIntersecting}`);
>>>>>>>>>> }
>>>>>>>>>> </script>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Nov 27, 2023 at 11:40 PM Rick Byers <rby...@chromium.org>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> On Wed, Nov 22, 2023 at 2:37 PM Yoav Weiss <yoav...@chromium.org>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Thanks, that sounds like a strict improvement.
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Nov 22, 2023 at 6:25 AM Traian Captan <
>>>>>>>>>>>> tca...@chromium.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Yes, that's correct.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Nov 21, 2023 at 9:18 PM Yoav Weiss <
>>>>>>>>>>>>> yoav...@chromium.org> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Do I understand correctly that currently lazy-loaded images
>>>>>>>>>>>>>> in CSS scrollers have suboptimal behavior and this would improve 
>>>>>>>>>>>>>> that
>>>>>>>>>>>>>> without potentially harming other cases?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wed, Nov 22, 2023 at 1:55 AM Traian Captan <
>>>>>>>>>>>>>> tca...@chromium.org> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Contact emailstca...@chromium.org
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ExplainerNone
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>> A short (inline) explainer would help reviewers to understand
>>>>>>>>>>>> e.g. if this involves changes to the API surface that developers 
>>>>>>>>>>>> need to
>>>>>>>>>>>> care about.
>>>>>>>>>>>> Can you write a few words on the impact on developers?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Specification
>>>>>>>>>>>>>>> https://html.spec.whatwg.org/#lazy-load-root-margin
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>> The spec doesn't mention anything specific around root margins
>>>>>>>>>>>> or scroll margins (other than the algorithm name).
>>>>>>>>>>>> Are these concepts interoperable?
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> I dug around a little to try to better understand this. The HTML
>>>>>>>>>>> spec does mention
>>>>>>>>>>> <https://html.spec.whatwg.org/#start-intersection-observing-a-lazy-loading-element>
>>>>>>>>>>>  setting
>>>>>>>>>>> the "scrollMargin" on the IntersectionObserver, a new property we 
>>>>>>>>>>> recently
>>>>>>>>>>> shipped (I2S
>>>>>>>>>>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/Ax8rTBusZ4s/m/nogj-s-eGQAJ?utm_medium=email&utm_source=footer>
>>>>>>>>>>> ).
>>>>>>>>>>> While WebKit and Gecko aren't yet passing the WPT tests
>>>>>>>>>>> <https://wpt.fyi/results/intersection-observer?label=master&label=experimental&aligned&q=scroll-margin>
>>>>>>>>>>> for this yet, interestingly WebKit is already passing
>>>>>>>>>>> <https://wpt.fyi/results/html/semantics/embedded-content/the-img-element?label=master&label=experimental&aligned&q=image-loading-lazy-in->
>>>>>>>>>>> most of the newly added
>>>>>>>>>>> <https://chromium-review.googlesource.com/c/chromium/src/+/5023396>
>>>>>>>>>>> WPTs for lazy loaded images in particular. So perhaps their 
>>>>>>>>>>> implementation
>>>>>>>>>>> already handled this?
>>>>>>>>>>>
>>>>>>>>>>> Seems reasonable to me - LGTM1
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Summary
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Changes the lazy load intersection observer's init
>>>>>>>>>>>>>>> dictionary to use a scrollMargin instead of a rootMargin. This 
>>>>>>>>>>>>>>> allows lazy
>>>>>>>>>>>>>>> loading images contained inside CSS scrollers, like carousels, 
>>>>>>>>>>>>>>> to load as
>>>>>>>>>>>>>>> expected when near the viewport instead of the current behavior 
>>>>>>>>>>>>>>> where these
>>>>>>>>>>>>>>> images load when at least one pixel is intersecting the 
>>>>>>>>>>>>>>> viewport.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Blink componentBlink>Image
>>>>>>>>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EImage>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Search tagslazyload
>>>>>>>>>>>>>>> <https://chromestatus.com/features#tags:lazyload>,
>>>>>>>>>>>>>>> scrollmargin
>>>>>>>>>>>>>>> <https://chromestatus.com/features#tags:scrollmargin>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> TAG reviewNone
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> TAG review statusNot applicable
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Risks
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Interoperability and Compatibility
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Overall low as scroll margin also applies to the root
>>>>>>>>>>>>>>> element thus not affecting lazy loading images that are 
>>>>>>>>>>>>>>> currently loading
>>>>>>>>>>>>>>> with just a root margin.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *Gecko*: Positive (
>>>>>>>>>>>>>>> https://github.com/w3c/IntersectionObserver/issues/431)
>>>>>>>>>>>>>>> https://bugzilla.mozilla.org/show_bug.cgi?id=1864794
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *WebKit*: Positive (
>>>>>>>>>>>>>>> https://github.com/w3c/IntersectionObserver/issues/431#issuecomment-930602435
>>>>>>>>>>>>>>> ) https://bugs.webkit.org/show_bug.cgi?id=264864
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *Web developers*: Positive (
>>>>>>>>>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1391989
>>>>>>>>>>>>>>> )
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *Other signals*:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 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, Chrome OS, 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/html/semantics/embedded-content/the-img-element?label=master&label=experimental&aligned&q=image-loading-lazy-in-
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Flag name on chrome://flagsLazyLoadScrollMargin
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Finch feature nameNone
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Non-finch justification
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> This feature is behind an enabled-by-default flag that can
>>>>>>>>>>>>>>> be disabled if needed.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Requires code in //chrome?False
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Tracking bug
>>>>>>>>>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1391989
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Estimated milestones
>>>>>>>>>>>>>>> Shipping on desktop 121
>>>>>>>>>>>>>>> DevTrial on desktop 121
>>>>>>>>>>>>>>> Shipping on Android 121
>>>>>>>>>>>>>>> DevTrial on Android 121
>>>>>>>>>>>>>>> Shipping on WebView 121
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 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).
>>>>>>>>>>>>>>> None
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Link to entry on the Chrome Platform Status
>>>>>>>>>>>>>>> https://chromestatus.com/feature/5106926245642240
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Links to previous Intent discussionsIntent to prototype:
>>>>>>>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvtrmHkoOpTuD2eZYVOyFuAhP8ZFVoTuNBS8zYTVY%3DTaaQ%40mail.gmail.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+...@chromium.org.
>>>>>>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvsUb0GEG9WNWRN7Akkowjm03gLj%2Biiq5rG8%2BzdAWMBTNA%40mail.gmail.com
>>>>>>>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvsUb0GEG9WNWRN7Akkowjm03gLj%2Biiq5rG8%2BzdAWMBTNA%40mail.gmail.com?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+...@chromium.org.
>>>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfVhH_QxckxRLbR05jrN0CY48aQ-Ag3BypusnsyKoDTc0A%40mail.gmail.com
>>>>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfVhH_QxckxRLbR05jrN0CY48aQ-Ag3BypusnsyKoDTc0A%40mail.gmail.com?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+...@chromium.org.
>>>>>>>> To view this discussion on the web visit
>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvvCQF36A34oECY-0tpJVjTk%3D2gD_8WcwMWWAyc5_O3JFg%40mail.gmail.com
>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvvCQF36A34oECY-0tpJVjTk%3D2gD_8WcwMWWAyc5_O3JFg%40mail.gmail.com?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 on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvswX%3DBSX-n8bw%3DTEkBXc3nuXLg%3DWqdEZw4Md2aDS23Y%3Dw%40mail.gmail.com.

Reply via email to