W3C home > Mailing lists > Public > www-style@w3.org > January 2014

RE: [css-regions] performance of regions fragmentation

From: François REMY <francois.remy.dev@outlook.com>
Date: Thu, 23 Jan 2014 19:25:59 +0100
Message-ID: <DUB404-EAS192CF7B6284E12547E01BC6A5A60@phx.gbl>
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

This archive was generated by hypermail 2.4.0 : Friday, 25 March 2022 10:08:38 UTC