On Tue, Jun 10, 2025 at 4:16 AM Javier Fernandez <jfernan...@igalia.com>
wrote:

> Hi Ian,
>
> Thanks for the feedback and the offering of a call to discuss the
> implementation approach.
> On 9/6/25 20:03, Ian Kilpatrick wrote:
>
>
>
> On Mon, Jun 9, 2025 at 10:16 AM Chromestatus <
> ad...@cr-status.appspotmail.com> wrote:
>
>> Summary
>>
>> This feature allows developers to align the content of the boxes
>> participating in row-like shared context by their last baseline, instead of
>> their first. This is done via the following property: align-content last
>> baseline; /* Table cells, Flex items or grid items */
>>
>>
> Horray! The feature is somewhat non-trivial to implement, if you could
> share a document on how you are thinking of implementing - I'm also happy
> to jump on a VC to discuss how to implement it - it's quite complex/nuanced.
>
>
> Yeah, I know it's a complex feature. I implemented the Baseline
> Self-Alignment for grid a few years ago, but it was pre-LayoutNG, so things
> have changed considerably since then. I still need to finish the analysis
> of the current code and complete the design doc. I'll share it as soon as I
> have a preliminary draft so that we can iterate from that.
>
>
> That'd be great. Thanks. The closest thing we have today is the code for
"TableCellAlignmentBaseline" logic. We'll need to generalize this, and
extend it to all layout modes, instead of just a "table baseline alignment
context" with a block child.

>
>
>> Blink component Blink>Layout
>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ELayout%22>
>>
>> Motivation
>>
>> Both Firefox and Safari already implements this feature, as it's shown in
>> the wpt.fyi tests dashboard, hence this is an interoperability issue.
>> Additionally, Chrome already supports it for block containers, but it's
>> disabled at parsing time because of the lack of implementation for grid and
>> flex items.
>>
>>
> > Both Firefox and Safari already implements this feature
>
> This isn't true. The situation is relatively complex.
>
> See this testcase:
> https://www.software.hixie.ch/utilities/js/live-dom-viewer/?saved=13847
>
>
> Yeah, I agree. This feature is clearly "partially implemented" in both
> Safari and Firefox. However, based on what I could get from the current
> WPT, it seems that last-baseline is reasonably well supported for grid with
> block children, at least in Frefox.
>
Yeah Firefox has only reliably implemented this feature for block children
in a grid alignment context.

>
>
> The layout modes which should support this are "flex", "grid", "table".
>
>
> Supporting the 3 display values is a long shot, and complex, as you said.
> My idea was to start this implementation and progressively improve the
> interoperability in the case of grid with block children, which is the one
> with more support now.  The alternative to improve interoperability would
> be to unship the last-baseline feature in Firefox and Safari, as you
> comment later, but I'm not sure at this moment how feasible that approach
> would be. Worth rising the issue at the CSS WG, as you suggests below as
> well.
>
So I'd like to ensure we support all the different combinations here, we
need to do this before shipping so that @supports works reliably for us.

There are three components to this feature:
 (1) A parent layout mode telling a child that they a baseline alignment
context (flex, grid, table).
 (2) A child layout respecting this baseline alignment request (all layout
modes that support a align-content, e.g. block, grid, flex, table,
fieldset, multicol, etc).
 (3) Fallback when a child isn't participating within a baseline alignment
context.

>
>
> Blink - supports parsing `align-content: baseline`. Doesn't support it in
> any layout mode. We explicitly didn't ship parsing for "align-content: last
> baseline" due to lack of layout support.
>
>
> Agree
>
>
> Safari - supports parsing both `align-content: baseline` / `align-content:
> last baseline`. Doesn't support it in any layout mode.
> (Added parsing support for "last baseline" in
> https://webkit.org/blog/13591/webkit-features-in-safari-16-2/#:~:text=Features%20more%20often.-,Last%20Baseline,-CSS%20Alignment%20allows
> but it didn't add layout support for the feature).
>
>
> I think Safari has "some" support in layout for the case of last-baseline
> with block children, as it's shown in the following WPTs
>
>
> https://wpt.fyi/results/css/css-align/blocks/align-content-block-005.html?label=master&label=experimental&aligned&view=subtest&q=align-content-block%20or%20last-baseline%20or%20content-baseline%20or%20item-mixed-baseline
>
> I think Chrome also passes these tests, just by enabling the
> "last-baseline" keyword in the CSS parsing code. I believe this is because
> of the recent implementation of Baseline alignment for block containers.
>
> https://chromium-review.googlesource.com/c/chromium/src/+/6625778
>
>
> This is just part (3) mentioned above, when a child isn't participating
within a baseline alignment context it should fallback to end alignment -
its not really true that we support baseline alignment for block
containers, just the fallback alignment.

>
> Gecko - supports parsing `align-content: baseline` / `align-content: last
> baseline`. Only supports it for "display: grid" *and* with block children,
> and *sometimes* correct for other children, but mostly broken.
>
>
> I think we could aim at being at the level of support Firefox has
> nowadays, hopefully encouraging them to fix those other children cases.
> From that, we can then face the implementation of the support for flex ad
> tables; I've got the impression that the latter case is the most complex
> one.
>
>
> We should aim higher before shipping :).

I'd personally start with a flex baseline context, and *all* children
types, then adding support for grid, and table.

Some tests to look at are:
https://wpt.fyi/results/css/css-flexbox/alignment
(e.g. we test "align-self: baseline" and all children types to ensure the
correct alignment).

There are subtleties with each child layout mode selecting the right
baseline to align to.

>
> It might be worth raising a CSSWG issue to try and get the other browsers
> (and us) to unship parsing "align-content: baseline" until the feature is
> supported across all layout modes.
>
>
> Yeah, definitively worth to do it. The current  view of the wpt.fyi
> dashboard regarding the test cases using align-content: baseline and
> align-content: last-baseline is not accurate at all; in many cases the pass
> result doesn't reflect the feature being complete or correctly implemented.
> If we manage to improve interoperability, even reducing the pass rate of
> the other browsers, it'd be a good first step, IMHO.
>
>
> Are you able to file this issue? I can help explain the (poor) state of
the feature in all browsers.

--
> javi
>

-- 
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/CAJL3UpTmXT_ykxxp0keicJ8%3DRy9S4jNU5piXZzfnsTte%2BH4C-g%40mail.gmail.com.

Reply via email to