On 11/22/13 8:44 PM, Ian Hickson wrote:
<select>s aren't rendered according to the CSS in the way that <button>
contents are. Consider:

    http://software.hixie.ch/utilities/js/live-dom-viewer/saved/2654

OK, but consider http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=2655

Basically, the concept of "replaced element" as you interpret it is not
quite flexible enough to describe all the things that "don't behave like
normal CSS boxes" that we have around.

"As I interpret it" is "as it's defined in CSS".

Maybe.  It doesn't seem to be how UAs interprets it...

Here's a simple testcase of interest, by the way:

data:text/html,<!DOCTYPE html><button style="position: absolute; left: 0; right: 0">Some text</button>

note that Blink and Gecko apply the replaced element sizing rules here. So does Presto. IE11 and WebKit don't seem to.

If the definition is
wrong, let's fix it, but as currently defined, <button> isn't a replaced
element by the CSS definition.

The current CSS definition is loose enough that it's not that easy to tell what is or is not a replaced element by that definition, honestly. As I said, UAs do various stuff here, not all of it self-consistent.

Setting it to 'table-row' doesn't make it a row on the outside:

Just like <img>, odd.

In the case of <img>, that's a bug, as far as I can tell. I don't see what
in CSS would justify this behaviour.

You've expressed that opinion in the past, yes. I may even agree with you on what the CSS spec says, but all UAs have this bug and none seem too interested in trying to fix it (because it's hard to fix it efficiently, in fact). And at this point I'm not entirely sure a fix would be web-compatible.

Maybe it's a bug for <button> as well, and maybe "replaced element" needs
to be redefined so that it's not about the contents but about the element
having intrinsic dimensions that override normal sizing behaviour.

Or maybe we need multiple distinct concepts, yes.

Certainly the current handling of replaced elements in CSS is all about them having weird sizing (because since by definition CSS has nothing to say about their insides, then sizing is the only thing that remains to define). So in practice, the concepts of "has weird sizing" and "we don't define what it does on the inside" got completely conflated even in the spec.

I could probably describe how Gecko implements <button> if you would
like. Either here or in <https://www.w3.org/Bugs/Public/show_bug.cgi?id=23893>.
Just let me know.

Sure, that'd be great. (Either place is fine.)

Will write it up.

-Boris

Reply via email to