-
Notifications
You must be signed in to change notification settings - Fork 714
[css-grid] Static position should use content-box, not padding-box #3020
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
Comments
The Working Group just discussed
The full IRC log of that discussion<dael> Topic: Static position should use content-box, not padding-box<dael> github: https://github.com//issues/3020 <dael> Rossen: TabAtkins and fantasai noticed this while reviewing Grid and they asked if we should s tick to this or align to everything else. Opinions? <dael> Rossen: TabAtkins is calling in <dael> fantasai: I imagine he'sin favor <TabAtkins> ^_^ <dbaron> makes sense to me <dael> Rossen: We can resolve to align grid layout static position as content box rather then padding. Objections? <dael> RESOLVED: align grid layout static position as content box rather then padding. |
@mrego FYI, there's also a bunch of tests under css/vendor-imports/mozilla/mozilla-central-reftests/align3/ they are all updated now. |
@MatsPalmgren thanks for the info, probably we should import those in Chromium/WebKit too. |
This is a recent change by the CSSWG: w3c/csswg-drafts#3020 The spec text (https://drafts.csswg.org/css-grid/#static-position): "The static position of an absolutely-positioned child of a grid container is determined as if it were the sole grid item in a grid area whose edges coincide with the content edges of the grid container." The patch is just a simple change in LayoutGrid::PrepareChildForPositionedLayout() to use border and padding. BUG=884956 TEST=external/wpt/css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html Change-Id: I01a77dfe41abcfac00c6d45f517c6d216aaa8ff7 Reviewed-on: https://chromium-review.googlesource.com/1229893 Commit-Queue: Manuel Rego <[email protected]> Reviewed-by: Javier Fernandez <[email protected]> Cr-Commit-Position: refs/heads/master@{#592010}
https://bugs.webkit.org/show_bug.cgi?id=189698 Reviewed by Javier Fernandez. LayoutTests/imported/w3c: * web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html: Update tests from WPT. Source/WebCore: This is a recent change by the CSSWG: w3c/csswg-drafts#3020 The spec text (https://drafts.csswg.org/css-grid/#static-position): "The static position of an absolutely-positioned child of a grid container is determined as if it were the sole grid item in a grid area whose edges coincide with the content edges of the grid container." Test: imported/w3c/web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html * rendering/RenderGrid.cpp: (WebCore::RenderGrid::prepareChildForPositionedLayout): Simple change to use border and padding. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@236126 268f45cc-cd09-0410-ab3c-d52691b4dbfc
@MatsPalmgren one question about the tests. I see tests for self and content alignment in the case of flexboxes, but only for self alignment in the case of grid layout. Why? For example, I'm wondering if for grid layout the following two examples. Should they have the same output (the abspos element should be horizontally and vertically centered)?
<div style="display: grid; width: 200px; height: 100px; place-items: center;
border: solid thick;">
<div style="position: absolute; background: magenta;">abspos</div>
</div>
<div style="display: grid; width: 200px; height: 100px; place-content: center;
border: solid thick;">
<div style="position: absolute; background: magenta;">abspos</div>
</div> |
I don't know, but many of our Grid tests are in a separate folder. There should be some content-alignment tests there. (We want to convert these to WPT tests and upstream them eventually. Just lack of resources that it hasn't happened yet...)
Note that the grid container is not an abs.pos. containing block in your examples, so §9.2 applies. In particular:
In your first example (self-alignment), css-align says "use the box’s static position rectangle", i.e. "By default, the static position rectangle of the child of a grid container corresponds to the content edges of the grid container.", so that's what leads to the first abs.pos. being centered in the content-box. In the second case (content-alignment), it's the grid of the grid-container that is aligned, but since the abs.pos. box isn't grid-aligned at all it's not affected by that. If you add So this example should display the same as your first example: <div style="display: grid; width: 200px; height: 100px; place-content: center; place-items: center; border: solid thick; grid:0/0; position:relative">
<div style="grid-area:1/1/-1/-1; position: absolute; background: magenta;">abspos</div>
</div> |
Tab and I just noticed that while every other layout mode uses the content box of the static position containing block to set the static position, grid uses the padding box.
We suspect this was an error and we should fix this. Anyone have a different opinion?
Spec: https://drafts.csswg.org/css-grid-1/#static-position
Testcase: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/6105
The text was updated successfully, but these errors were encountered: