Re: [css-break][css-masking][css-shapes] fragmentation

On 01/14/2014 06:26 PM, Dirk Schulze wrote:
>
> On Jan 13, 2014, at 11:32 PM, fantasai <fantasai.lists@inkedblade.net> wrote:
>
>> Fragmentation extensively covers breaking into variable-sized
>> fragmentainers:
>>   http://dev.w3.org/csswg/css-break/#varying-size-boxes
>>   http://dev.w3.org/csswg/css-break/#joining-boxes
>>
>> What aspect of variable-size fragmentation is not covered?
>
> I think it is not complete.
>
> List item 2 in your list says that layout is performed per fragment.
> Each fragment starts from the break point of the previous one. But
> size and position is *recalculated* to the current fragment. (Note
> that the first list item seem to imply that intrinsic sizing depends
> on the layout of the first fragment container while the second list
> item clearly says otherwise.)
>
> Lets go on with the second list item:
> * Imagine an element is split into two fragment containers with auto
> height and a width of 100px for the first container and a width of
> 200px for the second container. It just happens that (based on the
> content) the first fragment will have a height of 50px, the second
> of 100px.
>
> Container 1
> +----+
> |    |
> |    |
>
> Container 2
> |        |
> |        |
> |        |
> |        |
> +--------+
>
> (| and - represent 25px)
>
> * You have a radial gradient or a clipping circle with a radius of
> 50px positioned 50px,50px from the top left of the content box.

Okay, this will put the center at the center of the bottom edge
of the first box, and at 50px along the top edge of the second box.

> You will see the upper half of the gradient/clipping circle on the first fragment.

Yes.

> Since the first sentence in list item says that you continue after
> the break as you stopped before the break, the second part of the
> gradient/circle starts at the top of the second fragment container.

Yes.

> But the sentence in list item 2 continues: “recalculating sizes and
> positions using its own size”. This implies that the position of
> top left of the content box is recalculated based on the metrics of
> the second box. Suddenly the position shifts closer to the break and
> you will see more than half of the gradient in the second fragmentation
> container. I do not believe that this is the expected behavior of web
> authors.

No, you recalculate sizes and positions of the box using the fragmentainer's
own size, but you preserve progress. Since we have progressed through 50px
height of the background area, we start at 50px through the background area
on the second fragment. We place the radial gradient origin at the top
edge of the second fragment, 50px from the left edge (50px from the left as
specified, and 0px from the top since we already ate 50px in the first
fragment). From this point we then recalculate the gradient end points
based on the geometry of the second fragment.

See the second link I posted, http://dev.w3.org/csswg/css-break/#joining-boxes
The last paragraph explains this in detail.

~fantasai

Received on Tuesday, 27 October 2015 07:53:02 UTC