@@ -499,8 +499,11 @@ as the Flow-Relative box model properties defined in [[css-logical-1#box]].
499
499
'overflow-x' and 'overflow-y' properties.
500
500
The mapping depends on the element's 'writing-mode' .
501
501
502
- <h2 id="text-overflow" caniuse="text-overflow">
503
- Overflow Ellipsis: the 'text-overflow' property</h2>
502
+ <h2 id="auto-ellipsis">
503
+ Automatic Ellipses</h3>
504
+
505
+ <h3 id="text-overflow" caniuse="text-overflow">
506
+ Overflow Ellipsis: the 'text-overflow' property</h3>
504
507
505
508
<pre class="propdef">
506
509
Name : text-overflow
@@ -555,7 +558,7 @@ on a line
555
558
must be clipped rather than ellipsed.
556
559
557
560
<div class=example>
558
- <h3 id="bidi-ellipsis" class="no-num no-toc">Bidi ellipsis examples</h3 >
561
+ <h4 id="bidi-ellipsis" class="no-num no-toc">Bidi ellipsis examples</h4 >
559
562
These examples demonstrate which characters get hidden
560
563
to make room for the ellipsis in a bidi situation:
561
564
those visually at the end edge of the line.
@@ -583,7 +586,7 @@ Sample HTML fragments, renderings, and your browser:
583
586
584
587
</div>
585
588
586
- <h3 id="ellipsing-details" class="no-num no-toc">ellipsing details</h3 >
589
+ <h4 id="ellipsing-details" class="no-num no-toc">ellipsing details</h4 >
587
590
<ul>
588
591
<li>
589
592
Ellipsing only affects rendering and must not affect layout
@@ -602,7 +605,7 @@ then clip the rendering of the ellipsis itself
602
605
would have otherwise been clipped with the ''text-overflow:clip'' value).
603
606
</ul>
604
607
605
- <h3 id="ellipsis-interaction" class="no-num no-toc">user interaction with ellipsis</h3 >
608
+ <h4 id="ellipsis-interaction" class="no-num no-toc">user interaction with ellipsis</h4 >
606
609
<ul>
607
610
<li> When the user is interacting with content
608
611
(e.g. editing, selecting, scrolling),
@@ -616,7 +619,7 @@ Behavior of partially-selected ellipsed text is up to the UA.
616
619
</ul>
617
620
618
621
<div class="example"><p style="display:none"> Example(s):
619
- <h3 id="text-overflow-examples" class="no-num no-toc">text-overflow examples</h3 >
622
+ <h4 id="text-overflow-examples" class="no-num no-toc">text-overflow examples</h4 >
620
623
621
624
These examples demonstrate setting the text-overflow of a block container element
622
625
that has text which overflows its dimensions:
@@ -716,7 +719,7 @@ to represent that clipped content.
716
719
717
720
<!-- insert RTL example diagram here to illustrate note. -->
718
721
719
- <h3 id="ellipsis-scrolling" class="no-num no-toc">ellipsis interaction with scrolling interfaces</h3 >
722
+ <h4 id="ellipsis-scrolling" class="no-num no-toc">ellipsis interaction with scrolling interfaces</h4 >
720
723
721
724
This section applies to elements with text-overflow other than ''text-overflow:clip''
722
725
(non-clip text-overflow)
@@ -779,8 +782,118 @@ having it overlap other text by default.
779
782
780
783
While the content is being scrolled, implementations may adjust their rendering of ellipses (e.g. align to the box edge rather than line edge).
781
784
782
- <h2 id=line-clamp>
783
- Limiting Visible Lines: the 'line-clamp' shorthand property</h2>
785
+ <h3 id="block-ellipsis">
786
+ Indicating Block-Axis Overflow: the 'block-overflow' property</h3>
787
+
788
+ <pre class=propdef>
789
+ Name : block-overflow
790
+ Value : clip | ellipsis | <<string>>
791
+ Initial : clip
792
+ Applies to : [=block containers=]
793
+ Inherited : yes
794
+ Percentages : N/A
795
+ Computed value : specified value
796
+ </pre>
797
+
798
+ This property allows inserting content into the last line box
799
+ before a (forced <em> or</em> unforced) <a>region break</a>
800
+ to indicate the continuity of truncated/interrupted content.
801
+ It only affects line boxes contained directly by the <a>block container</a> itself,
802
+ but as it inherits, will have an effect on descendants’ line boxes unless overridden.
803
+ If the box contains no line box immediately preceding a <a>region break</a> ,
804
+ then this property has no effect.
805
+
806
+ Note: See [[#fragmentation]] for a way to generate boxes with such a [=region break=] .
807
+
808
+ ISSUE: Should this apply to other types of fragmentation breaks (e.g. pages, columns)?
809
+
810
+ The inserted content is called the <dfn>block overflow ellipsis</dfn> .
811
+ Values have the following meanings:
812
+
813
+ <dl dfn-for="block-overflow" dfn-type=value>
814
+ <dt> <dfn>clip</dfn>
815
+ <dd>
816
+ The rendering is unaffected.
817
+
818
+ <dt> <dfn>ellipsis</dfn>
819
+ <dd>
820
+ Render an ellipsis character (U+2026)--
821
+ or a more typographically-appropriate equivalent--
822
+ as the <a>block overflow ellipsis</a>
823
+ at the end of the affected line box.
824
+ UAs should use the conventions of the
825
+ <a>content language</a> ,
826
+ writing system, and
827
+ <a>writing mode</a>
828
+ to determine the most appropriate ellipsis string.
829
+
830
+ <dt> <dfn><<string>></dfn>
831
+ <dd>
832
+ Render the specified string
833
+ as the <a>block overflow ellipsis</a>
834
+ at the end of the affected line box.
835
+ The UA may truncate this string if it is absurdly long.
836
+ </dl>
837
+
838
+ When 'block-overflow' is not ''block-overflow/clip'' ,
839
+ the <a>block overflow ellipsis</a> string
840
+ is wrapped in an anonymous inline
841
+ and placed at the end of the line box
842
+ as a direct child of the <a>block container</a> ’s <a>root inline box</a> ,
843
+ reducing the space in the line box
844
+ available to the other contents of the line.
845
+ This inline is assigned ''unicode-bidi: plaintext''
846
+ and is placed in the line box after the last
847
+ <a>soft wrap opportunity</a> [[!CSS-TEXT-3]]
848
+ that would still allow the entire <a>block overflow ellipsis</a> to fit on the line.
849
+ (This can result in the entire contents of the line box being replaced.)
850
+ For this purpose, <a>soft wrap opportunities</a> added by 'overflow-wrap' are ignored.
851
+ Text <a href="https://www.w3.org/TR/css-text-3/#justification">alignment and justification</a>
852
+ occurs after placement,
853
+ and measures the inserted <a>block overflow ellipsis</a>
854
+ together with the rest of the line’s content.
855
+
856
+ If there is no next <a>fragmentation container</a>
857
+ and thus the remainder of the content after the break would be discarded,
858
+ then the UA may visually replace the contents of the line,
859
+ as it does for 'text-overflow' .
860
+ If, however, there is a next <a>fragmentation container</a>
861
+ that would receive subsequent content,
862
+ then the content replaced by the <a>block overflow ellipsis</a>
863
+ must be pushed to the next <a>fragmentation container</a>
864
+ and the <a>block overflow ellipsis</a> inserted and laid out
865
+ exactly as if it were part of the <a>in-flow</a> contents of the line.
866
+ This can result in changes to layout within or impacted by the line.
867
+ The means of breaking any resulting cycles is up to the UA.
868
+
869
+ If the <a>block overflow ellipsis</a>
870
+ is too long to fit in the line,
871
+ the result is undefined.
872
+ (The UA may, for example, treat the <a>block overflow ellipsis</a> as an unbreakable string,
873
+ or it may lay out the string across more than one line,
874
+ replacing content in earlier lines as well.)
875
+
876
+ The <a>block overflow ellipsis</a> does not capture events:
877
+ pointer events are dispatched to whatever is underneath
878
+ or otherwise visually replaced by it.
879
+
880
+ It also has no effect on the intrinsic size of the box:
881
+ its <a lt="min-content size">min-content</a> and <a lt="max-content size">max-content</a> sizes
882
+ are calculated exactly as if 'block-overflow' were ''block-overflow/clip'' .
883
+
884
+ Note: Future specifications may extend this feature,
885
+ for example by providing an ''::ellipsis'' pseudo-element
886
+ to style the text,
887
+ or by allowing the selection of a child element of the block
888
+ to use as either an inline-level or block-level indicator
889
+ (in which case, it can capture events).
890
+
891
+
892
+ <h2 id=fragmentation>
893
+ Fragmenting Overflow</h2>
894
+
895
+ <h3 id=line-clamp>
896
+ Limiting Visible Lines: the 'line-clamp' shorthand property</h3>
784
897
785
898
<pre class=propdef>
786
899
Name : line-clamp
@@ -796,6 +909,14 @@ Limiting Visible Lines: the 'line-clamp' shorthand property</h2>
796
909
The 'line-clamp' property is a <a>shorthand</a>
797
910
for the 'max-lines' , 'block-overflow' , and 'continue' properties.
798
911
912
+ Issue: For the time being,
913
+ experiemental implementations are encouraged
914
+ to follow the full behavior defined by this shorthand and its longhands,
915
+ but to only expose the shorthand to authors.
916
+ This is in order to facilitate further tweaking,
917
+ and in particular potential renaming,
918
+ of the longhand properties and their values.
919
+
799
920
It allows limiting the contents of a block container
800
921
to the specified number of lines;
801
922
remaining content is fragmented away
@@ -822,14 +943,6 @@ Limiting Visible Lines: the 'line-clamp' shorthand property</h2>
822
943
See the corresponding longhand properties for details
823
944
about how this mechanism operates.
824
945
825
- Issue: For the time being,
826
- experiemental implementations are encouraged
827
- to follow the full behavior defined by this shorthand and its longhands,
828
- but to only expose the shorthand to authors.
829
- This is in order to facilitate further tweaking,
830
- and in particular potential renaming,
831
- of the longhand properties and their values.
832
-
833
946
<div class="example">
834
947
In this example, the lead paragraph of each article
835
948
is listed in a shortened menu,
@@ -875,8 +988,8 @@ Limiting Visible Lines: the 'line-clamp' shorthand property</h2>
875
988
Something more complicated might be needed.
876
989
877
990
878
- <h2 id="max-lines">
879
- Forcing a break after a set number of lines: the 'max-lines' property</h2 >
991
+ <h3 id="max-lines">
992
+ Forcing a break after a set number of lines: the 'max-lines' property</h3 >
880
993
881
994
<pre class=propdef>
882
995
Name : max-lines
@@ -931,8 +1044,8 @@ Forcing a break after a set number of lines: the 'max-lines' property</h2>
931
1044
* classify these fragmentation containers as "category3" (i.e. not pages nor multicol) for the purpose of forced breaks.
932
1045
</div>
933
1046
934
- <h2 id="fragmentation ">
935
- Fragmentation of overflow: the 'continue' property</h2 >
1047
+ <h3 id="continue ">
1048
+ Fragmentation of overflow: the 'continue' property</h3 >
936
1049
937
1050
<pre class=propdef>
938
1051
Name : continue
@@ -1056,111 +1169,6 @@ Once it is sufficiently stable in this specification,
1056
1169
</figure>
1057
1170
</div>
1058
1171
1059
- <h2 id="block-ellipsis">
1060
- Indicating Block-Axis Overflow: the 'block-overflow' property</h2>
1061
-
1062
- <pre class=propdef>
1063
- Name : block-overflow
1064
- Value : clip | ellipsis | <<string>>
1065
- Initial : clip
1066
- Applies to : [=block containers=]
1067
- Inherited : yes
1068
- Percentages : N/A
1069
- Computed value : specified value
1070
- </pre>
1071
-
1072
- This property allows inserting content into the last line box
1073
- before a (forced <em> or</em> unforced) <a>region break</a>
1074
- to indicate the continuity of truncated/interrupted content.
1075
- It only affects line boxes contained directly by the <a>block container</a> itself,
1076
- but as it inherits, will have an effect on descendants’ line boxes unless overridden.
1077
- If the box contains no line box immediately preceding a <a>region break</a> ,
1078
- then this property has no effect.
1079
-
1080
- ISSUE: Should this apply to other types of fragmentation breaks (e.g. pages, columns)?
1081
-
1082
- The inserted content is called the <dfn>block overflow ellipsis</dfn> .
1083
- Values have the following meanings:
1084
-
1085
- <dl dfn-for="block-overflow" dfn-type=value>
1086
- <dt> <dfn>clip</dfn>
1087
- <dd>
1088
- The rendering is unaffected.
1089
-
1090
- <dt> <dfn>ellipsis</dfn>
1091
- <dd>
1092
- Render an ellipsis character (U+2026)--
1093
- or a more typographically-appropriate equivalent--
1094
- as the <a>block overflow ellipsis</a>
1095
- at the end of the affected line box.
1096
- UAs should use the conventions of the
1097
- <a>content language</a> ,
1098
- writing system, and
1099
- <a>writing mode</a>
1100
- to determine the most appropriate ellipsis string.
1101
-
1102
- <dt> <dfn><<string>></dfn>
1103
- <dd>
1104
- Render the specified string
1105
- as the <a>block overflow ellipsis</a>
1106
- at the end of the affected line box.
1107
- The UA may truncate this string if it is absurdly long.
1108
- </dl>
1109
-
1110
- When 'block-overflow' is not ''block-overflow/clip'' ,
1111
- the <a>block overflow ellipsis</a> string
1112
- is wrapped in an anonymous inline
1113
- and placed at the end of the line box
1114
- as a direct child of the <a>block container</a> ’s <a>root inline box</a> ,
1115
- reducing the space in the line box
1116
- available to the other contents of the line.
1117
- This inline is assigned ''unicode-bidi: plaintext''
1118
- and is placed in the line box after the last
1119
- <a>soft wrap opportunity</a> [[!CSS-TEXT-3]]
1120
- that would still allow the entire <a>block overflow ellipsis</a> to fit on the line.
1121
- (This can result in the entire contents of the line box being replaced.)
1122
- For this purpose, <a>soft wrap opportunities</a> added by 'overflow-wrap' are ignored.
1123
- Text <a href="https://www.w3.org/TR/css-text-3/#justification">alignment and justification</a>
1124
- occurs after placement,
1125
- and measures the inserted <a>block overflow ellipsis</a>
1126
- together with the rest of the line’s content.
1127
-
1128
- If there is no next <a>fragmentation container</a>
1129
- and thus the remainder of the content after the break would be discarded,
1130
- then the UA may visually replace the contents of the line,
1131
- as it does for 'text-overflow' .
1132
- If, however, there is a next <a>fragmentation container</a>
1133
- that would receive subsequent content,
1134
- then the content replaced by the <a>block overflow ellipsis</a>
1135
- must be pushed to the next <a>fragmentation container</a>
1136
- and the <a>block overflow ellipsis</a> inserted and laid out
1137
- exactly as if it were part of the <a>in-flow</a> contents of the line.
1138
- This can result in changes to layout within or impacted by the line.
1139
- The means of breaking any resulting cycles is up to the UA.
1140
-
1141
- If the <a>block overflow ellipsis</a>
1142
- is too long to fit in the line,
1143
- the result is undefined.
1144
- (The UA may, for example, treat the <a>block overflow ellipsis</a> as an unbreakable string,
1145
- or it may lay out the string across more than one line,
1146
- replacing content in earlier lines as well.)
1147
-
1148
- The <a>block overflow ellipsis</a> does not capture events:
1149
- pointer events are dispatched to whatever is underneath
1150
- or otherwise visually replaced by it.
1151
-
1152
- It also has no effect on the intrinsic size of the box:
1153
- its <a lt="min-content size">min-content</a> and <a lt="max-content size">max-content</a> sizes
1154
- are calculated exactly as if 'block-overflow' were ''block-overflow/clip'' .
1155
-
1156
- Note: Future specifications may extend this feature,
1157
- for example by providing an ''::ellipsis'' pseudo-element
1158
- to style the text,
1159
- or by allowing the selection of a child element of the block
1160
- to use as either an inline-level or block-level indicator
1161
- (in which case, it can capture events).
1162
-
1163
-
1164
1172
1165
1173
Privacy and Security Considerations {#priv-sec}
1166
1174
===============================================
0 commit comments