W3C home > Mailing lists > Public > whatwg@whatwg.org > June 2014

Re: [whatwg] SVG cloning elements from HTML5

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Tue, 24 Jun 2014 12:50:35 -0700
Message-ID: <CAAWBYDB6S4-_RuBP9QP-if62nyqvJ6WjmUSzkYCSPDckiG5pAA@mail.gmail.com>
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

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 17:00:21 UTC