- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Tue, 24 Jun 2014 12:50:35 -0700
- To: Gavin Kistner <phrogz@me.com>
- Cc: www-svg <www-svg@w3.org>, WHATWG List <whatwg@whatwg.org>, "robert@ocallahan.org" <robert@ocallahan.org>
[plain-text email, please. HTML emails rarely survive plain-text-ification unscathed.] On Mon, Jun 23, 2014 at 11:35 PM, Gavin Kistner <phrogz@me.com> wrote: > On 24 Jun 2014, at 05:25, Robert O'Callahan <robert@ocallahan.org> wrote: >> On Thu, Jun 19, 2014 at 4:33 AM, Tab Atkins Jr. <jackalmage@gmail.com> >> wrote: >>> >>> Allowing html directly in svg is definitely the right answer. Parsing >>> shouldn't be too hard, and defining the layout model would be pretty >>> trivial. >> >> For layout, we could do this: >> 1) When an HTML element is a child of an SVG element, perform CSS layout of >> the HTML element treating the nearest SVG viewport as the containing block. >> Its user-space width and height become the width and height of the >> containing block in CSS pixels. >> 2) Treat such HTML elements as "position:relative". > > We should also support position:absolute. Given that this can then be > changed, what happens for position:static? Ignored? Just flow within the > school container? > > I agree that position:relative is a desirable default in this case, but if > position:static can be supported then I (lightly) argue that a special case > to change the default value inside SVG is a bad idea. It's more code, and > less expected for end users. Okay, changing my mind a little bit. Giving more thought here, I think we should: 1. Define that the SVG layout model is a thing. <svg> elements trigger it automatically, probably via "display-inside: svg !important;" in the UA stylesheet. (This allows "display: whatever;" on <svg> elements to still work correctly, as it would only be able to change display-outside.) 2. Other SVG elements propagate the SVG layout model. This is maybe via a "display-outside:svg" rule on "svg|*:not(svg)". We can tweak what approach we use here. 3. Everything in the SVG layout model is positioned relative to the root of an SVG layout model, using x and y properties. 4. That's it. Normal HTML elements use display:inline or display:block or whatever, so they dont' propagate the model; they position themselves via x/y, but their children lay out normally. You can then use 'position' as usual if you want to abspos or whatever, but given the standard position:static, x/y is where it's at. ~TJ
Received on Tuesday, 24 June 2014 19:51:20 UTC