@@ -867,65 +867,86 @@ Overflow Alignment: the ''safe'' and ''unsafe'' keywords and scroll safety limit
867
867
<dt> (no value specified)
868
868
<dd>
869
869
If the <a>overflow alignment</a> isn't explicitly specified,
870
- the default <a>overflow alignment</a> is a blend of “safe” and “unsafe”,
871
- and also varies slightly depending on layout mode.
872
-
873
- For [=absolutely positioned=] [=alignment subjects=]
874
- which are not in [=legacy positioning mode=]
875
- in the given axis:
876
-
877
- 1. If the [=alignment subject=] overflows its [=inset-modified containing block=]
878
- (its normal [=alignment container=] ),
879
- no effect.
880
- 2. If the <em> size</em> of the [=alignment subject=]
881
- fits within its [=original containing block=] ,
882
- but its alignment would cause it to overflow the [=original containing block=] ,
883
- it is instead shifted the minimum amount
884
- to stay within the [=original containing block=]
885
- (flush with the edge of the [=original containing block=]
886
- it was trying to overflow over).
887
- 3. If the size of the [=alignment subject=]
888
- overflows the [=original containing block=] ,
889
- it is instead start-aligned within the [=original containing block=] .
890
-
891
- For all other elements:
892
-
893
- 1. If the [=alignment subject=] overflows its [=alignment container=] ,
894
- no effect.
895
- 2. If the [=alignment subject=] would overflow
896
- the [=scrollable overflow area=] of its nearest ancestor [=scroll container=] ,
897
- (thus extending into the “unscrollable” region),
898
- then its overflow in that direction is limited
899
- by biasing any remaining overflow to the opposite side.
900
-
901
- Issue: It may not be Web-compatible to implement the “smart” default behavior
902
- (though we hope so, and believe it to be likely),
903
- so UAs should pass any feedback on this point to the WG.
904
- UAs that have not implemented the “smart” default behavior
905
- must behave as ''safe'' for 'align-content' on [=block containers=]
906
- and ''unsafe'' otherwise.
870
+ the default <a>overflow alignment</a> is a blend of “safe” and “unsafe”.
871
+ See [[#auto-safety]] for details.
907
872
</dl>
908
873
909
- An [=absolutely-positioned element=]
910
- is in <dfn export>legacy positioning mode</dfn>
911
- in a given axis
912
- if all of the following are true:
913
874
914
- * the relevant [=self-alignment property=] is ''justify-self/normal'' on the element.
915
- * the elements's 'inset-area' property does not define an [=inset-area grid=] .
916
-
917
- Note: A number of newer behaviors across several specifications
918
- can't apply to elements in [=legacy positioning mode=] ,
919
- due to backwards-compatibility constraints.
920
-
921
- <!--
922
- ██████ ███████ ██ ██ ████████ ████████ ██ ██ ████████
923
- ██ ██ ██ ██ ██ ██ ███ ██ ██ ██ ███ ██ ██
924
- ██ ██ ██ ██ ██ ████ ██ ██ ██ ████ ██ ██
925
- █████████ ███████ ██ ██ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ██
926
- ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ████ ██
927
- ██ ██ ██ ██ ██ ██ ██ ███ ██ ██ ██ ███ ██
928
- ██████ ███████ ██ ██ ██ ████████ ██ ██ ██
875
+ <h4 id=auto-safety>
876
+ Automatic Overflow Alignment Safety</h4>
877
+
878
+ If no [=overflow alignment=] mode is specified for a property,
879
+ the default behavior lies somewhere between ''safe'' and ''unsafe'' ,
880
+ and also varies by layout mode.
881
+
882
+ <h5 id=auto-safety-scroll>
883
+ Content Distribution for Scroll Containers</h5>
884
+
885
+ The default [=overflow alignment=] behavior
886
+ for [=content distribution=] on [=scroll containers=] is ''unsafe'' .
887
+ Non-''normal'' values of the [=content distribution properties=] instead
888
+ alter the [=scrollable overflow area=] in order to allow access to the overflowing content.
889
+ See [[#overflow-scroll-position]] .
890
+
891
+ <h5 id=auto-safety-position>
892
+ Self-Alignment for Absolutely Positioned Boxes</h5>
893
+
894
+ For [=absolutely positioned=] [=alignment subjects=] whose
895
+
896
+ * relevant [=self-alignment property=] is not ''justify-self/normal'' and
897
+ * whose 'inset-area' property successfully defines an [=inset-area grid=]
898
+
899
+ the default [=overflow alignment=] behavior is as follows:
900
+
901
+ 1. If the [=alignment subject=] overflows its [=inset-modified containing block=]
902
+ (its normal [=alignment container=] ),
903
+ but does not overflow its [=original containing block=]
904
+ align as specified (''unsafe'' ).
905
+ 2. If the <em> size</em> of the [=alignment subject=]
906
+ fits within its [=original containing block=] ,
907
+ but its specified alignment would cause it to overflow the [=original containing block=] ,
908
+ it is instead shifted the minimum amount
909
+ to stay within the [=original containing block=]
910
+ while honoring the alignment as much as possible
911
+ (i.e., flush with the edge of the [=original containing block=]
912
+ it was trying to overflow over).
913
+ 3. If the size of the [=alignment subject=]
914
+ overflows the [=original containing block=] ,
915
+ it is instead start-aligned within the [=original containing block=]
916
+ (similar to ''safe'' ).
917
+
918
+ (For [=absolutely-positioned=] [=alignment subjects=] that fail the above conditions,
919
+ see [[#auto-safety-defaults]] .)
920
+
921
+ <h5 id=auto-safety-default>
922
+ All Other Alignment</h5>
923
+
924
+ For all other elements:
925
+
926
+ 1. If the [=alignment subject=] overflows its [=alignment container=] ,
927
+ align as specified (''unsafe'' ).
928
+ 2. If the [=alignment subject=] would overflow
929
+ the [=scrollable overflow area=] of its nearest ancestor [=scroll container=] ,
930
+ (thus extending into the “unscrollable” region),
931
+ then its overflow in that direction is limited
932
+ by biasing any remaining overflow to the opposite side.
933
+
934
+ Issue: It may not be Web-compatible to implement the “smart” default behavior
935
+ (though we hope so, and believe it to be likely),
936
+ so UAs should pass any feedback on this point to the WG.
937
+ UAs that have not implemented the “smart” default behavior
938
+ must behave as ''safe'' for 'align-content' on [=block containers=]
939
+ and ''unsafe'' otherwise.
940
+
941
+ <!-- Big Text: *-content
942
+
943
+ ███▌ ███▌ █ █▌ █████▌ █████▌ █ █▌ █████▌
944
+ █ █ █▌ █▌ █▌ █▌ █▌ █▌ █▌ █▌ █▌ █▌ █▌
945
+ █ █ █▌ █▌ █▌ ██▌ █▌ █▌ █▌ ██▌ █▌ █▌
946
+ ███████ ████▌ █▌ █▌ █▌ █▌▐█ █▌ █▌ ████ █▌▐█ █▌ █▌
947
+ █ █ █▌ █▌ █▌ █▌ ██▌ █▌ █▌ █▌ ██▌ █▌
948
+ █ █ █▌ █▌ █▌ █▌ █▌ █▌ █▌ █▌ █▌ █▌ █▌
949
+ ███▌ ███▌ █▌ ▐▌ █▌ █████▌ █▌ ▐▌ █▌
929
950
-->
930
951
931
952
<h2 id='content-distribution'>
0 commit comments