[whatwg] <imgset> responsive imgs proposition (Re: The src-N proposal)

Maciej Stachowiak mjs at apple.com
Mon Nov 18 17:08:39 PST 2013


On Nov 18, 2013, at 2:54 PM, Tab Atkins Jr. <jackalmage at gmail.com> wrote:

> On Mon, Nov 18, 2013 at 1:35 PM, Maciej Stachowiak <mjs at apple.com> wrote:
>> I'm not enough of a CSS expert to understand the implications of that change. What would be the observable behavior changes that 'content: replaced' would produce?
>> 
>>>> - For Firefox, the 'content' property doesn't work on an element (as opposed to :before and :after)..
>>> 
>>> This is just a lack of implementation.
>>> 
>>>> I was able to get Safari and Chrome to work by getting rid of 'replaced' and specifying the images in CSS instead of using url(attr). With those changes, I noted the following possibly undesirable effects:
>>> 
>>> It didn't actually work - if you try to size the element, you'll note
>>> that the images don't care.
>> 
>> Not sure what you mean by this. Do you mean that explicitly sizing the <img> will be ignored by the replaced 'content' image? Because that does not seem to be Safari or Chrome's current behavior. In particular, this markup always gives me a 10x10 image but the contents change with the window size:
> 
> Ah, right, WK/Blink violate the spec wrt 'content' on real elements.
> They don't support the normal value set, but do support a single
> url(), which makes the element replaced.
> 
> Try it on a ::before pseudo, which implements the actual spec for 'content':
> 
> <!DOCTYPE html>
> <div></div>
> <style>
> div::before {
>  display: block;
>  width: 400px;
>  height: 100px;
>  border: thin solid;
>  content: "foo" url(http://xanthir.com/pony);
> }
> </style>
> 
> Even if you remove the "foo" string, so it's just a single image, it
> still just sits there in the pseudo-element at its normal size,
> ignoring the div::before's size entirely.
> 
> The "replaced" keyword will be a new branch in the 'content' grammar,
> which allows a single url() after it, and does what WK/Blink currently
> do.

I see. It seems like it would be simpler to just define content on a real element to have the existing WK/Blink behavior without saying "replaced". It is not obvious why ignoring the element size is a useful default behavior. But I suppose that discussion is out of scope here and would better be discussed in a CSS-relevant forum.

For the sake of curiosity: is there any reasonably accurate current draft that describes what 'content' is supposed to do on a non-pseudo element?

The most recent reference I could find is <http://www.w3.org/TR/css3-content/> but that hasn't been updated in a while. It says "If the computed value of the part of the 'content' property that ends up being used is a single URI, then the element or pseudo-element is a replaced element. The box model defines different rules for the layout of replaced elements than normal elements. Replaced elements do not have '::before' and '::after' pseudo-elements; the 'content' property in the case of replaced content replaces the entire contents of the element's box." But I can't tell if that matches what you say or is the opposite.

Regards,
Maciej




More information about the whatwg mailing list