Skip to content

Commit c78e58b

Browse files
committed
[css-align-3] Clarify when auto margins cause or interfere with coordinated self-alignment preference for baseline content-alignment. #5923
1 parent 7b78f0d commit c78e58b

File tree

1 file changed

+61
-19
lines changed

1 file changed

+61
-19
lines changed

css-align-3/Overview.bs

+61-19
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,9 @@ Module Interactions</h3>
101101

102102
This module adds some new alignment capabilities
103103
to the block layout model described in [[!CSS2]] <a href="https://www.w3.org/TR/CSS2/visuren.html">chapters 9</a>
104-
and <a href="https://www.w3.org/TR/CSS2/visudet.html">10</a>
105-
and defines the interaction of these properties
104+
and <a href="https://www.w3.org/TR/CSS2/visudet.html">10</a>,
105+
<a href="#justify-block">redefines how overconstrained block-level box margins are resolved</a>,
106+
and defines the interaction of these new alignment properties
106107
with the alignment of table cell content using 'vertical-align',
107108
as defined in [[!CSS2]] <a href="https://www.w3.org/TR/CSS2/tables.html#height-layout">chapter 17</a>.
108109

@@ -1204,25 +1205,62 @@ Baseline Content-Alignment</h3>
12041205
and if its computed 'align-content' is ''first baseline''/''last baseline''.
12051206
</dl>
12061207

1207-
Additionally, if <a>self-alignment</a> applies to the box in an axis,
1208-
in order to participate in <a>baseline content-alignment</a> in that axis
1209-
it must also have a <dfn noexport>coordinated self-alignment preference</dfn>;
1210-
that is:
1211-
1212-
* The relevant <a>self-alignment property</a>
1213-
behaves as either ''align-self/stretch'' or ''self-start''/''self-end''
1214-
given a <a>baseline alignment preference</a> of ”first”/“last”.
1215-
For this purpose,
1216-
the ''start'', ''end'', ''flex-start'', and ''flex-end'' values
1217-
are treated as either ''self-start'' or ''self-end'',
1218-
whichever they end up equivalent to.
1219-
* Its used self-alignment is not affected by its [=overflow alignment=].
1220-
(That is, the used self-alignment is what would result from an ''unsafe'' [=overflow alignment=].)
1221-
1222-
<!-- This is because such a box is no longer guaranteed to line up the relevant edge with its siblings -->
1208+
Additionally,
1209+
in order to participate in <a>baseline content-alignment</a>
1210+
it must also have a <dfn noexport>coordinated self-alignment preference</dfn>,
1211+
to guarantee that the box lines up the relevant edge
1212+
with other boxes in its [=baseline-sharing group=].
1213+
That is, the box’s [=start=] ([=end=]) [=margin edge=]
1214+
must be intended to align--
1215+
and actually align--
1216+
to the corresponding [=edge=] of its [=containing block=]
1217+
when its [=baseline alignment preference=] is “first” (“last”).
12231218
It otherwise takes its <a>fallback alignment</a>.
12241219

1225-
See [[#align-by-baseline]] for exact details.
1220+
<details class="note">
1221+
<summary>When is a self-alignment preference coordinated?</summary>
1222+
1223+
A box’s [=start=] [=margin edge=] is aligned
1224+
to the corresponding edge of its [=containing block=]
1225+
and it has a [=coordinated self-alignment preference=]
1226+
for a “first” [=baseline alignment preference=] when,
1227+
in the relevant axis:
1228+
1229+
* There are no ''margin/auto'' [=margins=] and
1230+
the relevant <a>self-alignment property</a>
1231+
either is or aligns identically to
1232+
''align-self/stretch'' or ''self-start''; or
1233+
* There is only an ''margin/auto'' [=end=]-edge [=margin=],
1234+
which absorbs any positive free space
1235+
and disables the effects of any [=self-alignment property=],
1236+
<em>and</em>
1237+
its [=margin box=] does not overflow its [=containing block=]
1238+
under circumstances that would cause it
1239+
to effectively end-align instead
1240+
(such as having a [=containing block=] with an opposite [=writing mode=]).
1241+
1242+
A box’s [=end=] [=margin edge=] is aligned
1243+
to the corresponding edge of its [=containing block=]
1244+
and it has a [=coordinated self-alignment preference=]
1245+
for a “last” [=baseline alignment preference=] when,
1246+
in the relevant axis:
1247+
1248+
* There are no ''margin/auto'' [=margins=] and
1249+
the relevant <a>self-alignment property</a>
1250+
either is or aligns identically to ''self-end''
1251+
<em>and</em>
1252+
its self-alignment is what would result
1253+
from an ''unsafe'' [=overflow alignment=]; or
1254+
* There is only an ''margin/auto'' [=start=]-edge [=margin=],
1255+
which absorbs any positive free space
1256+
and disables the effects of any [=self-alignment property=]
1257+
<em>and</em>
1258+
its [=margin box=] does not overflow its [=containing block=]
1259+
under circumstances that would cause it
1260+
to effectively start-align instead.
1261+
</details>
1262+
1263+
See [[#align-by-baseline]] for additional details.
12261264
<a>Baseline content-alignment</a> can increase the intrinsic size of the box.
12271265

12281266
<!--
@@ -2410,6 +2448,10 @@ Changes</h2>
24102448
(<a href="https://github.com/w3c/csswg-drafts/issues/3611">Issue 3611</a>)
24112449
<li>Clarified that only non-replaced boxes are affected by [=content-alignment].
24122450
(<a href="https://github.com/w3c/csswg-drafts/issues/4545">Issue 4545</a>)
2451+
<li>Clarified when a box has a [=coordinated self-alignment preference=]
2452+
that enables [=baseline content-alignment=],
2453+
particularly with respect to ''margin/auto'' [=margins=].
2454+
(<a href="https://github.com/w3c/csswg-drafts/issues/5923">Issue 5923</a>)
24132455
</ul>
24142456

24152457
Changes since the <a href="https://www.w3.org/TR/2018/WD-css-align-3-20181206/">6 December 2018 Working Draft</a> include:

0 commit comments

Comments
 (0)