Skip to content

Commit 08f7615

Browse files
committed
[css-page-floats] make page float placement depend on placement of float in DOM and level of float reference + cleanup
1 parent e7ec647 commit 08f7615

1 file changed

Lines changed: 38 additions & 14 deletions

File tree

css-page-floats/Overview.bs

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -794,8 +794,25 @@ img {
794794

795795
<h2 id="page-float-placement">Page float placement</h2>
796796

797-
Page floats are placed one by one in the order they appear in the DOM. The
798-
placement of a single page float is a process that has to be terminated
797+
The order of page float placement is determined by the following rules:
798+
799+
<ol>
800+
<li>
801+
A page float is placed before any page floats with a <a>float reference</a>
802+
that is a descendant of its <a>float reference</a>.
803+
</li>
804+
<li>
805+
Page floats with the same <a>float reference</a> are placed in the order they
806+
appear in the DOM.
807+
</li>
808+
<li>
809+
Page floats whose float references are not descendants of one-another and
810+
that do not have the same <a>float reference</a> are placed in the order
811+
they appear in the DOM.
812+
</li>
813+
</ol>
814+
815+
The placement of a single page float is a process that has to be terminated
799816
entirely before the placement of a subsequent page float can be initiated. The
800817
placement process consists of the following steps:
801818

@@ -807,14 +824,15 @@ img {
807824
initially set to be the same as the <a>initial float reference</a>.</li>
808825

809826
<li>Determine if the given <a>float reference</a> has enough space or can be
810-
expanded to host the page float, if the rules of 'float stacking' and 'float
811-
reference growth' are to be followed. If this is not the case, and the
812-
<a>float reference</a> is not the last <a>fragmentation container</a> within the given
813-
<a>fragmentation context</a>, then make the following <a>fragmentation container</a>
814-
within the given <a>fragmentation context</a> the <a>float reference</a>. Repeat this
815-
step until the <a>float reference</a> can be expanded enough to host the page
816-
float or it is the last <a>fragmentation container</a> within the given
817-
<a>fragmentation context</a>.</li>
827+
expanded to host the page float, if the rules of <a href="#float-stacking">
828+
float stacking</a> and <a href="#float-reference-growth">float reference
829+
growth</a> are to be followed. If this is not the case, and the <a>float
830+
reference</a> is not the last <a>fragmentation container</a> within the given
831+
<a>fragmentation context</a>, then make the following <a>fragmentation
832+
container</a> within the given <a>fragmentation context</a> the <a>float
833+
reference</a>. Repeat this step until the <a>float reference</a> can be
834+
expanded enough to host the page float or it is the last <a>fragmentation
835+
container</a> within the given <a>fragmentation context</a>.</li>
818836

819837
<li>If the <a>float reference</a> is the last <a>fragmentation container</a> within
820838
the given <a>fragmentation context</a>, and it has not enough space and cannot be
@@ -823,9 +841,10 @@ img {
823841
<ol>
824842
<li>If the <a>fragmentation context</a> allows for the addition of another
825843
<a>fragmentation container</a> and an additional <a>fragmentation container</a>
826-
would have the needed size to host the page float, a new 'fragmentation
827-
container' is added to the end of the <a>fragmentation context</a>. The 'float
828-
reference' is set the newly created <a>fragmentation container</a>.</li>
844+
would have the needed size to host the page float, a new <a>fragmentation
845+
container</a> is added to the end of the <a>fragmentation context</a>. The
846+
<a>float reference</a> is set the newly created <a>fragmentation
847+
container</a>.</li>
829848

830849
<li>Otherwise, if the <a>fragmentation container</a> is a region, then the
831850
'regionOverset` attribute of the <a>fragmentation container</a> is set to
@@ -854,7 +873,7 @@ float with the same <a>float reference</a> and the same 'float' value, where N i
854873
the 'float-offset' value of the page float. For the placement it is assumed that
855874
the page floats in the block directions fill the entire line size of the <a>float
856875
reference</a> and page floats in the inline direction fill the entire block size
857-
of the <a>float reference<a>.
876+
of the <a>float reference</a>.
858877

859878
If the page float has a defined 'clear'-value, then the <a>float reference</a> in
860879
which the page float is placed is closed for all subsequent page floats that
@@ -1075,9 +1094,14 @@ p { float-reference: page; float: top; float-defer: last }
10751094
:
10761095

10771096
<ol>
1097+
<li>
1098+
Make the order of page float placement determined both by DOM and how high
1099+
in the DOM the page float reference is.
1100+
</li>
10781101
<li>
10791102
Specify use of padding edges for float references and margin edges for page
10801103
floats for placement.
1104+
</li>
10811105
<li>
10821106
Term change: fragmentation flow -> fragmentation context.
10831107
</li>

0 commit comments

Comments
 (0)