@@ -918,9 +918,7 @@ The 'justify-content' and 'align-content' Properties</h3>
918
918
<tr>
919
919
<th> 'justify-content' Axis
920
920
<td>
921
- Does not apply to and has no effect on <a>block containers</a>
922
- except insofar as it affects absolutely-positioned elements,
923
- see [[#distribution-abspos-static]] .
921
+ Does not apply to and has no effect on <a>block containers</a> .
924
922
<tr>
925
923
<th> ''justify-content/normal'' Behavior
926
924
<td>
@@ -936,62 +934,6 @@ The 'justify-content' and 'align-content' Properties</h3>
936
934
''justify-content/normal'' otherwise behaves as ''start'' .
937
935
</table>
938
936
939
- ### Static Position of Absolutely-Positioned Boxes ### {#distribution-abspos-static}
940
-
941
- When sizing absolutely-positioned boxes
942
- whose inline-axis offsets are both ''left/auto''
943
- according to [[CSS2#abs-non-replaced-width]] and [[CSS2#abs-replaced-width]] ,
944
- wherever the 'direction' property of the <a>static-position containing block</a> is referenced,
945
- instead reference the value of the 'justify-content' or 'align-content' property
946
- (whichever is defined to apply to the <a>static-position containing block</a> ’s <a>inline axis</a> ),
947
- treating ''justify-content/normal'' as ''start''
948
- and any <a>distributed alignment</a> value as its <a>fallback alignment</a> .
949
- For example,
950
- when 'direction' is ''ltr'' and 'justify-content' is ''justify-content/end'' ,
951
- apply the rules for ''direction: rtl'' ;
952
- when 'direction' is ''rtl'' and 'justify-content' is ''justify-content/space-between'' ,
953
- apply the rules for ''direction: rtl'' ;
954
- etc.
955
-
956
- Fundamentally these rules set one of the ''left/auto'' insets
957
- (by default, the start-edge inset)
958
- to the corresponding edge of the <a>static position rectangle</a>
959
- and the other to the corresponding edge of the <a>containing block</a>
960
- (i.e. set the inset to zero).
961
- For the case of ''justify-content/center'' (or its equivalent),
962
- split the difference:
963
- when both 'inset-inline-start' and 'inset-inline-end'
964
- ('left' and 'right' in horizontal LTR <a>writing modes</a> )
965
- are ''left/auto'' ,
966
- set both sides to match the <a>static position</a> .
967
- The absolutely-positioned box is then sized into
968
- the resulting space (floored at zero).
969
-
970
- Note: The 'align-self' /'justify-self' properties
971
- additionally modify the sizing and positioning rules
972
- specified in [[!CSS2]] .
973
- For example, ''justify-self: stretch'' will replace
974
- shrink-to-fit sizing with <a>stretch-fit</a> sizing.
975
-
976
- <div class="example">
977
- What this means is that,
978
- instead of always sizing an absolutely-positioned element
979
- within the available space between
980
- its inline-start <a>static position</a>
981
- and its inline-end <a>containing block</a> edge,
982
- the author can choose to instead use the space between
983
- its inline-start <a>containing block</a> edge
984
- and inline-end <a>static position</a>
985
- or between its inline-start and inline-end <a>static positions</a>
986
- by changing the <a>static-position containing block</a> ’s
987
- <a>content-distribution properties</a> .
988
-
989
- <figure>
990
- <img src="images/place-content-abspos.svg" width=480 height=330 alt="">
991
- <figcaption> An illustration of the above rules.</figcaption>
992
- </figure>
993
- </div>
994
-
995
937
### Multicol Containers ### {#distribution-multicol}
996
938
997
939
<table class="data align-details">
@@ -1700,6 +1642,79 @@ Baseline Self-Alignment</h3>
1700
1642
See [[#align-by-baseline]] for exact details.
1701
1643
<a>Baseline self-alignment</a> can increase the intrinsic size contribution of the box.
1702
1644
1645
+ <h3 id="abspos-sizing">
1646
+ Effects on Sizing of Absolutely Positioned Boxes with Static-Position Insets</h3>
1647
+
1648
+ For absolutely-positioned boxes
1649
+ whose inline-axis offsets are both ''left/auto'' ,
1650
+ the <a>available space</a> for calculating the <a>inline size</a>
1651
+ is also affected by alignment.
1652
+
1653
+ In [[CSS2]] , this is keyed off of the the 'direction' property
1654
+ of the <a>static-position containing block</a> .
1655
+ (See <a href="https://www.w3.org/TR/CSS2/visudet.html#abs-non-replaced-width">CSS2§10.3.7</a>
1656
+ and <a href="https://www.w3.org/TR/CSS2/visudet.html#abs-replaced-width">CSS2§10.3.8</a> .)
1657
+ Fundamentally these rules set one of the ''left/auto'' insets
1658
+ (by default, the start-edge inset)
1659
+ to the corresponding edge of the <a>static position rectangle</a>
1660
+ and the other to the corresponding edge of the <a>containing block</a>
1661
+ (i.e. set the inset to zero).
1662
+
1663
+ Just as the <a>self-alignment properties</a>
1664
+ replace the <a>containing block</a> ’s 'direction' for placement,
1665
+ they also replace this lookup for sizing.
1666
+ Thus,
1667
+ when interpreting the rules in
1668
+ <a href="https://www.w3.org/TR/CSS2/visudet.html#abs-non-replaced-width">CSS2§10.3.7</a>
1669
+ and <a href="https://www.w3.org/TR/CSS2/visudet.html#abs-replaced-width">CSS2§10.3.8</a> ,
1670
+ wherever the 'direction' property of the <a>static-position containing block</a> is referenced,
1671
+ instead reference the value of the 'align-self' or 'justify-self' property
1672
+ (whichever is defined to apply to the relevant axis),
1673
+ treating ''justify-content/normal'' as ''start''
1674
+ and any <a>distributed alignment</a> value as its <a>fallback alignment</a> .
1675
+
1676
+ <figure>
1677
+ <img src="images/place-content-abspos.svg" width=480 height=330
1678
+ alt="Start alignment sizes into the space between
1679
+ the start edge of the static-position rectangle and the end edge of the containing block.
1680
+ End alignment sizes into the space between
1681
+ the end edge of the static-position rectangle and the start edge of the containg block.
1682
+ Center alignment sizes into the space between
1683
+ the two edges of the static-position rectangle.">
1684
+ <figcaption>
1685
+ Instead of always sizing
1686
+ within the available space between
1687
+ the <a>inline-start</a> <a>static position</a>
1688
+ and the <a>inline-end</a> <a>containing block</a> edge,
1689
+ an absolutely-positioned element with ''left/auto'' insets
1690
+ will be sized with reference to
1691
+ the <a>static position rectangle</a> ’s edge(s)
1692
+ <em> most appropriate</em> to its specified <a>self-alignment</a> .
1693
+ </figcaption>
1694
+ </figure>
1695
+
1696
+ <div class="example">
1697
+ For example,
1698
+ when the box’s <a>containing block</a> ’s 'direction' is ''ltr''
1699
+ and its own 'justify-self' is ''justify-content/end'' ,
1700
+ apply the rules for ''direction: rtl'' ;
1701
+ when 'direction' is ''rtl'' and 'justify-content' is ''justify-content/space-between'' ,
1702
+ apply the rules for ''direction: rtl'' ;
1703
+ etc.
1704
+ For the case of ''justify-content/center'' (or its equivalent),
1705
+ set both sides to match the <a>static position</a> .
1706
+ The absolutely-positioned box is then sized into
1707
+ the resulting space (floored at zero).
1708
+ </div>
1709
+
1710
+
1711
+ Note: The 'align-self' /'justify-self' properties
1712
+ can also modify additional aspects of sizing:
1713
+ for example, ''justify-self: stretch'' will replace
1714
+ “shrink-to-fit” (<a>fit-content</a> ) sizing into the <a>available space</a>
1715
+ with <a>stretch-fit sizing</a> (consuming all of the <a>available space</a> ).
1716
+ This is an independent effect from the available space adjustment here.
1717
+
1703
1718
<!--
1704
1719
████ ████████ ████████ ██ ██ ██████
1705
1720
██ ██ ██ ██ ██ ███ ███ ██ ██
0 commit comments