Add position-anchor: normal#29483
Conversation
|
Tip: Review these changes grouped by change (recommended for most PRs), or grouped by feature (for large PRs). |
| { | ||
| "version_added": "125", | ||
| "version_added": "127", | ||
| "version_removed": "144", | ||
| "partial_implementation": true, | ||
| "notes": "The initial value is `normal` instead of `none` (see [bug 460415950](https://crbug.com/460415950))." | ||
| "notes": "The initial value is `auto` instead of `normal` (see [bug 460415950](https://crbug.com/460415950))." | ||
| }, | ||
| { | ||
| "version_added": "125", | ||
| "version_removed": "127", | ||
| "partial_implementation": true, | ||
| "notes": "The initial value is `implicit` instead of `normal` (see [bug 340878604](https://crbug.com/340878604))." | ||
| } |
There was a problem hiding this comment.
I don't see the necessity for two separate statements. In fact, merging them would bring the evolution of the initial value closer together:
"Before Chrome 127, the initial value isimplicitinstead ofnormal(see [bug 340878604](https://crbug.com/340878604)). Since Chrome 127, the initial value isautoinstead ofnormal(see [bug 460415950](https://crbug.com/460415950)).
There was a problem hiding this comment.
I don't think we'd be serving developers by suggesting that Chrome 125 to 144 represented a single implementation. The behavior of implicit is much closer to normal than auto is to normal. How the successive releases are broken is not just inconsistent with today's spec, but also inconsistent with Chrome's own implementations.
To put this another way, if Chrome had unshipped the implicit implementation in 128, then shipped the new auto implementation in 129, we would have no choice but to have multiple compat statements. This to me is closer in meaning to what is going on here than to collapse the two statements.
There was a problem hiding this comment.
I don't think we'd be serving developers by suggesting that Chrome 125 to 144 represented a single implementation.
I disagree that combining the partial implementation period in a single statement suggests this is a "single" implementation (whatever that means). In my opinion, what is most relevant for developers is the version range of partial support, and the start version of full support. To understand the evolution of the partial support, they can then look at the partial statement's notes.
But I won't insist here.
| { | ||
| "version_added": "144" | ||
| "version_added": "144", | ||
| "notes": "The initial value is `none` instead of `normal` (see [bug 501399489](https://crbug.com/501399489))." |
There was a problem hiding this comment.
Note: According to https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/position-anchor#none, none is the initial value, but the spec defines normal as the initial value. So the MDN page should also be updated.
Given that each browser has notes here, would this not warrant a subfeature initial_value_is_normal that none of the browsers support, with notes what the initial value is instead in different version ranges?
There was a problem hiding this comment.
I did contemplate a one or more subfeatures, however I don't think there is a good case to be made for one here. There are a few issues with using subfeatures:
- The spec evolution wasn't additive (e.g., like the contextual subfeature example in the guidelines). In a sense, you'd have to look to the
initial_value_is_normalfeature to know whetherposition-anchoritself is consistent between browsers. - This implied to me that we'd end up bubbling up the partial implementation to the parent feature. That would go against the spirit, if not the letter, of the behavioral subfeature guideline's recommendation to avoid subfeatures for data that "would be the same, across all browsers, as the parent feature."
- Once all browsers ship
normal, theinitial_value_is_normaldata would effectively duplicate thenormalsubfeature data, if you ignored the historic details. This also struck me as contrary to the spirit of the behavioral subfeature guideline. - If we used one subfeature, it's hard not to make the argument for multiple subfeatures (e.g., show each change in initial value, deprecating the old ones). This struck me as needlessly noisy.
That said, I will acknowledge that this PR does imply that we ought to make an implicit (deprecated) subfeature. I didn't do it because only one browser shipped it for a few months and it'll get deleted in a year anyway.
There was a problem hiding this comment.
As for the docs, I expect that'll get resolved shortly. https://bugzilla.mozilla.org/show_bug.cgi?id=2030351 has dev-doc-needed; it should hit beta next week, so I figured the usual process would take that up.
ddbeck
left a comment
There was a problem hiding this comment.
Because I was reading the guidelines, I ended up catching some missing partial_implementation flags here. Pushed a change with that as well as responded to comments in line.
| { | ||
| "version_added": "144" | ||
| "version_added": "144", | ||
| "notes": "The initial value is `none` instead of `normal` (see [bug 501399489](https://crbug.com/501399489))." |
There was a problem hiding this comment.
I did contemplate a one or more subfeatures, however I don't think there is a good case to be made for one here. There are a few issues with using subfeatures:
- The spec evolution wasn't additive (e.g., like the contextual subfeature example in the guidelines). In a sense, you'd have to look to the
initial_value_is_normalfeature to know whetherposition-anchoritself is consistent between browsers. - This implied to me that we'd end up bubbling up the partial implementation to the parent feature. That would go against the spirit, if not the letter, of the behavioral subfeature guideline's recommendation to avoid subfeatures for data that "would be the same, across all browsers, as the parent feature."
- Once all browsers ship
normal, theinitial_value_is_normaldata would effectively duplicate thenormalsubfeature data, if you ignored the historic details. This also struck me as contrary to the spirit of the behavioral subfeature guideline. - If we used one subfeature, it's hard not to make the argument for multiple subfeatures (e.g., show each change in initial value, deprecating the old ones). This struck me as needlessly noisy.
That said, I will acknowledge that this PR does imply that we ought to make an implicit (deprecated) subfeature. I didn't do it because only one browser shipped it for a few months and it'll get deleted in a year anyway.
| { | ||
| "version_added": "125", | ||
| "version_added": "127", | ||
| "version_removed": "144", | ||
| "partial_implementation": true, | ||
| "notes": "The initial value is `normal` instead of `none` (see [bug 460415950](https://crbug.com/460415950))." | ||
| "notes": "The initial value is `auto` instead of `normal` (see [bug 460415950](https://crbug.com/460415950))." | ||
| }, | ||
| { | ||
| "version_added": "125", | ||
| "version_removed": "127", | ||
| "partial_implementation": true, | ||
| "notes": "The initial value is `implicit` instead of `normal` (see [bug 340878604](https://crbug.com/340878604))." | ||
| } |
There was a problem hiding this comment.
I don't think we'd be serving developers by suggesting that Chrome 125 to 144 represented a single implementation. The behavior of implicit is much closer to normal than auto is to normal. How the successive releases are broken is not just inconsistent with today's spec, but also inconsistent with Chrome's own implementations.
To put this another way, if Chrome had unshipped the implicit implementation in 128, then shipped the new auto implementation in 129, we would have no choice but to have multiple compat statements. This to me is closer in meaning to what is going on here than to collapse the two statements.
| { | ||
| "version_added": "144" | ||
| "version_added": "144", | ||
| "notes": "The initial value is `none` instead of `normal` (see [bug 501399489](https://crbug.com/501399489))." |
There was a problem hiding this comment.
As for the docs, I expect that'll get resolved shortly. https://bugzilla.mozilla.org/show_bug.cgi?id=2030351 has dev-doc-needed; it should hit beta next week, so I figured the usual process would take that up.
| { | ||
| "version_added": "125", | ||
| "version_added": "127", | ||
| "version_removed": "144", | ||
| "partial_implementation": true, | ||
| "notes": "The initial value is `normal` instead of `none` (see [bug 460415950](https://crbug.com/460415950))." | ||
| "notes": "The initial value is `auto` instead of `normal` (see [bug 460415950](https://crbug.com/460415950))." | ||
| }, | ||
| { | ||
| "version_added": "125", | ||
| "version_removed": "127", | ||
| "partial_implementation": true, | ||
| "notes": "The initial value is `implicit` instead of `normal` (see [bug 340878604](https://crbug.com/340878604))." | ||
| } |
There was a problem hiding this comment.
I don't think we'd be serving developers by suggesting that Chrome 125 to 144 represented a single implementation.
I disagree that combining the partial implementation period in a single statement suggests this is a "single" implementation (whatever that means). In my opinion, what is most relevant for developers is the version range of partial support, and the start version of full support. To understand the evolution of the partial support, they can then look at the partial statement's notes.
But I won't insist here.
`position-area: normal`: initial value in Firefox 151 Issue: #29483 Issue: #29530 Issue: https://bugzilla.mozilla.org/show_bug.cgi?id=2030351
Summary
This adds an entry for
position-anchor: normal, even though it's not implemented anywhere yet.Test results and supporting details
Ordinarily, I would not track something that does not have an implementation. However, it makes the existing notes difficult to understand, citing behaviors that were, at one time, standard but are no longer. Since there's no consensus implementation, I think it's easier to understand what's going on here with these changes.
While I was here, I corrected the data for Chrome's initial value and note for Safari. I had previously erred in writing the notes in #29272. To "test" the initial value, I used the browsers' dev tools to inspect the computed value on an unstyled element.
Related issues
position-anchor: normalposition-anchor: normal