principles behind the 'outline-*' properties

It's long been my understanding that the 'outline-*' properties in
http://www.w3.org/TR/CSS21/ui.html#dynamic-outlines are intended
primarily for correct rendering of focus outlines, and therefore
ought to differ a good bit from the way borders work.  CSS 2.1
describes differences in a number of ways (such as merging of
inlines and closing of edges) that are appropriate for outlines.

In Gecko we've implemented outlines as surrounding not only the
border box of the element, but the border box of its descendants as
well.  This seems to me to be a better behavior for focus outlines,
but it's also a common source of author complaints, perhaps partly
because other implementations don't do things this way, and perhaps
partly because the complaints are coming from authors using the
'outline-*' properties for reasons other than showing focus.

Given (1) the complaints and (2) the complexity of maintaining our
current behavior in the presence of 3-D transforms (especially those
with preserve-3d), I'm considering agreeing to change Gecko's
behavior (in [1]) to just put the outline directly around the border
box.

I'm curious what others think of this change.

Some simple tests are: http://dbaron.org/css/test/2013/outline-behavior
These show Chromium and IE differing from the border-box by merging
across inlines, and Gecko differing from the border box by expanding
for overflow.  (I'd like us to fix Gecko to merge across inlines at
some point.)

-David

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=480888

-- 
𝄞   L. David Baron                         http://dbaron.org/   𝄂
𝄢   Mozilla                           http://www.mozilla.org/   𝄂

Received on Tuesday, 28 May 2013 04:47:59 UTC