- From: François REMY <francois.remy.dev@outlook.com>
- Date: Thu, 23 Jan 2014 19:25:59 +0100
- To: "'Alan Stearns'" <stearns@adobe.com>, "'L. David Baron'" <dbaron@dbaron.org>
- CC: "'Tab Atkins Jr.'" <jackalmage@gmail.com>, "'Brian Kardell'" <bkardell@gmail.com>, "'Johannes Wilm'" <johannes@fiduswriter.org>, "'www-style list'" <www-style@w3.org>, 'Håkon Wium Lie' <howcome@opera.com>
± On 1/22/14, 10:41 PM, "L. David Baron" <dbaron@dbaron.org> wrote:
± > I think CSS regions make a very poor primitive because they have very
± > poor performance in interesting cases. Rather than always having a
± > simple and fast behavior, they have behavior that requires
± > multiple-pass layout in some cases (especially when combined with
± > other features like CSS Exclusions).
±
± I disagree with your characterization of ‘very poor performance’ - what we
± have in the specification is there specifically to limit the performance
± implications of fragmentation in edge cases. The point of section 7 is to
± optimize for performance, and limit the requirements to two-pass layout
± (not multiple-pass layout).
±
± I’m not sure what you mean about combining with CSS Exclusions. Yes, when
± you combine features complexity goes up. I don’t see anything special about
± the combination of regions and exclusions.
I'm not into David's head but my take is that there's a strong assumption in the region layout code that is not possible to express in CSS right now: layout independence. To clarify, layout code makes the assumption that the following regions will not affect the layout of the previous regions. That's however not accurate in at least a few situations.
Let's take an example that use CSS Exclusions:
<section id="content">
<article style="flow-to: content">...</article>
</section>
<section id="article-presenter" style="position: relative; ">
<div style="flow-from: article; max-height: 100vh; "></div>
<div style="flow-from: article; position: absolute; width: 33vw; top: 0px; right: 0px; wrap-flow: start;"></div>
</section>
Which looks like
#####
#####
#####
#####
Or
###@@
###@@
#####
#####
Or
###@@
###@@
###@@
###@@
@@
@@
Depending on the content being flowned into the two DIVs.
This is a problem, because the non-excluded area of the first region element depends on the height of the second region... which depends on the content that overflows the first region, which depends on the non-excluded area of the first region. Ooops.
Please note that this is not a CSS Regions issue, though, because you could in fact replace the two DIVs by overflow fragments which David claims provide saner semantics. Solving this issue is non-trivial and may be worth some discussion.
Regards,
François
Received on Thursday, 23 January 2014 18:26:32 UTC