On 11/25/13 12:59 AM, Ian Hickson wrote:
It's more like <svg:g>. The CSS model just doesn't apply. Even in Firefox, it's not really CSS that's working there. It's some weird proprietary variant.
It's really not, once you have a DOM and are inside <option>.
I mean, as you've pointed out, child nodes of the <select> that aren't <option> or <optgroup> are mysteriously hidden
That's <select>, not <option>.
but also, the <option> elements obey some values of 'display' but don't obey e.g. 'position' or 'float';
That's pure CSS: it's a !important rule in a UA stylesheet. I guess you could claim that supporting !important in a UA stylesheet is a proprietary extension, albeit one that's in the process of being specified.
'white-space' doesn't seem to work right in a <select> or <option>;
option { white-space: nowrap !important; } in UA stylesheet.
the height of the <select> seems to be based in some weird way on the height of some of the <option>s...
That's about <select>, not <option>.
in the drop-down mode, it's even worse
My comments were specifically about <option> in a listbox. A combobox is a different and more complicated story (though even there the layout of the <option> itself is pure CSS in Gecko).
Put another way, there is no custom layout code for <option> in Gecko. It's all done entirely by the CSS renderer, based on the computed values of CSS properties for the element. Some of those computed values come from !important rules in a UA stylesheet, but that's it.
(By the way, in testing this, I discovered <option label> isn't supported in Firefox.
That's correct. https://bugzilla.mozilla.org/show_bug.cgi?id=40545
HTH. Also ::first-line on a display:table-row doesn't seem to be work, though I couldn't tell if that was per-spec or not. It doesn't seem to work for regular <div>s either.)
::first-line on a display:table-row shouldn't work in Gecko right now, yes. Whether it's per-spec depends on which spec you're reading and the phase of the moon. ;)
It should work on a block, of course, and does in my testing. -Boris