Re: [css-background] Order of properties in background shorthand

On Thu, May 31, 2012 at 2:50 PM, Joe Thomas <joethomas@motorola.com> wrote:
> I will try to explain the IE6 issue with an example.
>
> Assuming that we have a CSS3 UA and it generates the background shorthand
> property in getComputedStyle in the following order
>
> red border-box url(dummy://test.png) 50% 50% / cover.
>
> And assuming that the server feeds this generated result from CSS3 Browser
> to a CSS2.1 compatible browser like IE6. IE6 fails to parse even those
> properties which it supports in background shorthand.
> In the above case, IE6 parses only background-color correctly as it comes
> before newly introduced properties. IE6 stops parsing whenever it encounters
> an unsupported property-value like border-box in the above case.
>
> At the same time, if we restrict the order of background shorthand
> properties generated by a CSS3 UA in such a way that CSS2.1 properties comes
> before the newly introduced properties in CSS3, then IE6 parses all the
> CSS2.1 properties correctly and discards the new properties which are at the
> end.
>
> So if we change the above order to "red url(dummy://test.png) 50% 50% /
> cover border-box", IE6 parses bg-color, bg-image and bg-position correctly
> and discards the rest. So with this new order, IE6 can parse atleast all the
> properties it supports.
>
> Please let me know whether that make sense.

So you're saying that you're serializing property values in one
browser, sending them to the server, and later using them to style
other pages in another browser?

That seems pretty odd, if so.  Can you clarify?

If IE6 actually does treat that declaration as valid, and just ignores
everything from the first thing it doesn't recognize, that's *really*
incorrect behavior.  No compliant browser does that - the specs very
clearly state that you should throw away the whole declaration,
*precisely* because of this kind of bad behavior.

Anyway, the correct solution, if you are indeed doing the weird thing
there, is to parse it yourself and serve only the parts that IE6
actually understands.

~TJ

Received on Thursday, 31 May 2012 22:33:55 UTC