@@ -534,6 +534,155 @@ Limiting Visible Lines: the 'max-lines' property</h2>
534
534
introduced by the 'max-lines' property.
535
535
536
536
537
+ <h2 id="block-ellipsis">
538
+ Indicating Block-Axis Overflow: the 'block-overflow' property</h2>
539
+
540
+ ISSUE: This section is an unofficial draft, posted here for discussion.
541
+ See <a href="https://github.com/w3c/csswg-drafts/issues/390">issue</a> .
542
+
543
+ <pre class=propdef>
544
+ Name : block-overflow
545
+ Value : clip | ellipsis | <<string>>
546
+ Initial : clip
547
+ Applies to : <a>block containers</a>
548
+ Inherited : yes
549
+ Animatable : no
550
+ Percentages : N/A
551
+ Media : visual
552
+ Computed value : specified value
553
+ </pre>
554
+
555
+ This property allows inserting content into the last line box
556
+ before a (forced <em> or</em> unforced) <a>region break</a>
557
+ to indicate the continuity of truncated/interrupted content.
558
+ It only affects line boxes contained directly by the <a>block container</a> itself,
559
+ but as it inherits, will have an effect on descendants’ line boxes unless overridden.
560
+ If the box contains no line box immediately preceding a <a>region break</a> ,
561
+ then this property has no effect.
562
+
563
+ ISSUE: Should this apply to other types of fragmentation breaks (e.g. pages, columns)?
564
+
565
+ The inserted content is called the <dfn>block overflow ellipsis</dfn> .
566
+ Values have the following meanings:
567
+
568
+ <dl dfn-for="block-overflow" dfn-type=value>
569
+ <dt> <dfn>clip</dfn>
570
+ <dd>
571
+ The content is not altered.
572
+
573
+ <dt> <dfn>ellipsis</dfn>
574
+ <dd>
575
+ Render an ellipsis character (U+2026)--
576
+ or a more typographically-appropriate equivalent--
577
+ as the <a>block overflow ellipsis</a>
578
+ at the end of the affected line box.
579
+ UAs should use the conventions of the
580
+ <a>content language</a> ,
581
+ writing system, and
582
+ <a>writing mode</a>
583
+ to determine the most appropriate ellipsis string.
584
+
585
+ <dt> <dfn><<string>></dfn>
586
+ <dd>
587
+ Render the specified string
588
+ as the <a>block overflow ellipsis</a>
589
+ at the end of the affected line box.
590
+ The UA may truncate this string if it is absurdly long.
591
+ </dl>
592
+
593
+ <div class="example">
594
+ In this example, the lead paragraph of each article
595
+ is listed in a shortened menu,
596
+ truncated to fit within 10 lines
597
+ that end with “… (continued on next page)”:
598
+
599
+ <xmp highlight=css>
600
+ li {
601
+ max-lines: 5;
602
+ block-overflow: ellipsis;
603
+ block-ellipsis: "… (continued on next page)";
604
+ }
605
+ strong {
606
+ display: block;
607
+ text-transform: uppercase;
608
+ }
609
+ </xmp>
610
+
611
+ <xmp highlight=markup>
612
+ <li> <a href="cheese-is-milk">
613
+ <strong>Cheese is Actually Made of Milk!</strong>
614
+ Investigative reporters at the World Wide Web Press Corps
615
+ have discovered the secret of cheese.
616
+ Tracing through byzantine layers of bureacracy and shadow corporations,
617
+ our crack team of journalists have traced the source of camembert.
618
+ </a> </li>
619
+ </xmp>
620
+
621
+ Sample rendering:
622
+
623
+ <pre class="figure">
624
+ +---------------------------------------+
625
+ | CHEESE IS ACTUALLY MADE OF MILK! |
626
+ | Investigative reporters at the World |
627
+ | Wide Web Press Corps have discovered |
628
+ | the secret of cheese. Tracing through |
629
+ | byzantine… (continued on next page) |
630
+ +---------------------------------------+
631
+ </pre>
632
+ </div>
633
+
634
+ When 'block-overflow' is not ''block-overflow/clip'' ,
635
+ the <a>block overflow ellipsis</a>
636
+ is wrapped in an anonymous inline
637
+ and placed at the end of the line box
638
+ as a direct child of its containing block,
639
+ effectively shortening the line box
640
+ from the perspective of the remaining contents of the line.
641
+ This inline is assigned ''unicode-bidi: plaintext''
642
+ and is placed in the line box after the last
643
+ <a>soft wrap opportunity</a> [[!CSS-TEXT-3]]
644
+ that would still allow the entire <a>block overflow ellipsis</a> to fit on the line.
645
+ (This can result in the entire contents of the line box being replaced.)
646
+ For this purpose, <a>soft wrap opportunities</a> added by 'overflow-wrap' are ignored.
647
+ Text <a href="https://www.w3.org/TR/css-text-3/#justification">alignment and justification</a>
648
+ occurs after placement,
649
+ and measures the inserted <a>block overflow ellipsis</a>
650
+ together with the rest of the line’s content.
651
+
652
+ If there is no next <a>fragmentation container</a>
653
+ and thus the remainder of the content after the break would be discarded,
654
+ then the UA may visually replace the contents of the line,
655
+ as it does for 'text-overflow' .
656
+ If, however, there is a next <a>fragmentation container</a>
657
+ that would receive subsequent content,
658
+ then the content replaced by the <a>block overflow ellipsis</a>
659
+ must be pushed to the next <a>fragmentation container</a>
660
+ and the <a>block overflow ellipsis</a> inserted and laid out
661
+ exactly as if it were part of the <a>in-flow</a> contents of the line.
662
+ This can result in changes to layout within or impacted by the line.
663
+ The means of breaking any resulting cycles is up to the UA.
664
+
665
+ If the <a>block overflow ellipsis</a>
666
+ is too long to fit in the line,
667
+ the result is undefined.
668
+ (The UA may, for example, treat the <a>block overflow ellipsis</a> as an unbreakable string,
669
+ or it may lay out the string across more than one line,
670
+ replacing content in earlier lines as well.)
671
+
672
+ The <a>block overflow ellipsis</a> does not capture events:
673
+ pointer events are dispatched to whatever is underneath
674
+ or otherwise visually replaced by it.
675
+
676
+ It also has no effect on the intrinsic size of the box:
677
+ its <a lt="min-content size">min-content</a> and <a lt="max-content size">max-content</a> sizes
678
+ are calculated exactly as if 'block-overflow' were ''block-overflow/clip'' .
679
+
680
+ Note: Future specifications may extend this feature,
681
+ for example by providing an ''::ellipsis'' pseudo-element
682
+ to style the text,
683
+ or by allowing the selection of a child element of the block
684
+ to use as either an inline-level or block-level indicator
685
+ (in which case, it can capture events).
537
686
538
687
Privacy and Security Considerations {#priv-sec}
539
688
===============================================
0 commit comments