- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Mon, 18 Nov 2013 14:54:16 -0800
- To: Maciej Stachowiak <mjs@apple.com>
- Cc: Markus Ernst <derernst@gmx.ch>, Yoav Weiss <yoav@yoav.ws>, Ryosuke Niwa <rniwa@apple.com>, whatwg <whatwg@lists.whatwg.org>, Adam Barth <w3c@adambarth.com>, "Jukka K. Korpela" <jkorpela@cs.tut.fi>, Markus Lanthaler <markus.lanthaler@gmx.net>
On Mon, Nov 18, 2013 at 1:35 PM, Maciej Stachowiak <mjs@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. >>> (1) Saving the image from the context menu (or opening in a new tab or window, or other context menu operations like copy) always uses the "src" image instead of the selected image. Dragging it uses the correct image. >> >> Sounds like something that could potentially be fixed. >> >>> (2) Preloading will always preload the src (and I suspect the normal loader would do it to so that both the image src and the content: replaced source will be loaded). >> >> This is because the preloader doesn't understand CSS yet. > > Yes, but this affects (a) polyfill deployability and Right, there's always a tension between "preload the most important/fallback version" and "preload nothing until I'm ready" for polyfills. > (b) the level of cleverness required in the preloader's CSS parsing (it has to not only start preloads from CSS but inhibit natural image preloads). Correct. ~TJ
Received on Monday, 18 November 2013 22:55:04 UTC