Re: Time to drop "almost standards mode"?

On Monday 2008-01-28 19:12 +0100, Anne van Kesteren wrote:
> The amounts of duplicates in 
> https://bugzilla.mozilla.org/show_bug.cgi?id=22274 seems to keep growing. 
> Now with bugs about SVG inside table cells instead of spacer gifs. Maybe it 
> is time to reconsider and specify the behavior of "almost standards mode" 
> (which Internet Explorer exhibits in "standards mode" as I understand it) 
> in CSS 2.1 thereby effectively obsoleting the need for "almost standards 
> mode".
>
> http://developer.mozilla.org/en/docs/Images%2C_Tables%2C_and_Mysterious_Gaps 
> is the old article on this subject (though it was previously located on 
> developer.netscape.com).

I agree that this was a mistake, for two reasons:

 1. breaking compatibility with too much existing content

 2. it pushed authors away from using table-based layouts to doing
    things that are even worse, such as absolute positioning and
    very fragile uses of floats.  This was actually one of my
    initial reasons for pushing hard to keep the behavior CSS2
    specified rather than changing it, but I failed to realize what
    would replace it given the lack of a good user-interface layout
    model in CSS.  I was also less concerned about breaking
    compatibility then than I am now.

> To potential ways we can solve this:
>
> * Introduce a CSS new property to toggle between the different behaviours 
> defaulting to the "almost standards mode" one for HTML table elements.

I don't like mode properties very much because they don't cascade
well, but I suppose it's probably not too much of a problem in this
case because line-heights aren't that big a deal in terms of
cascading (although they might be a little bit in enforcing a
minimum-font-size preference).  I'd note that I've had a proposal
for such a mode property called line-box-contain:

http://www.w3.org/TR/2001/WD-css3-box-20010726/#the-line-box-contain

I have an action to edit it into css3-linebox which turned out
to be more difficult than I expected; I should probably get back to
it sometime, though.  The draft (above) says:

# Note that the CSS2 model is equivalent to 'block inline replaced'
# but the backwards-compatible HTML model is similar to (but not
# exactly) 'font replaced' [1]
#
# [1] I believe the differences are restricted to the first line of
# LI elements, the last line of LI, DD, and DT elements, and issues
# concerning whitespace around images. [DB] 

(I think there's actually an error here, and the backwards-
compatible model is "font inline replaced"; I think the line-height
of inline elements does affect the line in quirks mode.)

I'd also note that if I were designing from scratch I'd make the
default be more like "block font inline-box replaced".

> * Change the CSS model to behave like "almost standards mode" does now. And 
> maybe going forward introduce a new property to get the behavior described 
> now if that's desirable.

There are actually other reasons for wanting a mode-switching
property, since almost-standards-mode behavior isn't really ideal.
By ideal, I mean the thing that best satisfies the two goals:

 1) Ensure inter-line spacing is the same over lines (i.e., even
 spacing of baselines), which makes the text look better and ensures
 that text in different parts of the page (e.g., different columns)
 lines up properly.

 2) Ensure that objects don't overlap (unintentionally).

Note that some people have argued that we should only do (1) and
leave (2) entirely to the author.  However, this is rather dangerous
on the Web because many things that could cause overlap vary with
changes in device characteristics and user preferences, and authors
can't possibly test to ensure no overlap in all situations.

-David

-- 
L. David Baron                                 http://dbaron.org/
Mozilla Corporation                       http://www.mozilla.com/

Received on Monday, 28 January 2008 22:14:11 UTC