- From: James Elmore <James.Elmore@cox.net>
- Date: Sun, 08 Jul 2007 17:42:48 -0700
- To: www-style@w3.org
Rationale:
Blocks may have borders. Within a table element, designers can control what
happens to those borders when the blocks they surround are adjacent (visibly,
but not necessarily within the HTML document). Borders can overlap, and there
are rules about which border will show when the overlap occurs. Borders can
touch. Borders can also be separated by some (small) distance and the border
itself can be expanded to fill that gap, combining the two borders into a
single, wider border. Borders can also overlap when the parent (table) element’s
border combines with the children’s borders.
To provide similar border-overlap behavior in other situations (outside of
tables) the following CSS style rules are proposed.
Proposal:
'border-overlap', 'border-overlap-top’, border-overlap-right’,
border-overlap-bottom’, ‘border-overlap-left’
Value: normal | none | fill | lap | lap-min | lap-max
Initial: normal
Applies to: all elements except elements with table display types other
than table-caption, table and inline-table
Inherited: yes
Media: visual
normal use normal border overlap behaviors. (No overlap unless in a table.)
none no overlap, use both full borders, touching if no space between them.
fill if there is a margin (gap) between borders, expand it to fill the gap.
lap use CSS 2.1 border overlap rules
(http://www.w3.org/TR/CSS21/tables.html#borders).
lap-min overlap borders, but draw only the thinnest one.
lap-max overlap borders, drawing only the widest one.
‘border-overlap’ sets overlap styles for all four sides of the box.
‘border-overlap-top’, ‘border-overlap-right’, ‘border-overlap-bottom’, and
‘border-overlap-left’, set overlap rules for each block side (top, right,
bottom, and left) separately.
If no border is styled for any side, there can be no overlap or fill, so the
style value becomes ‘normal’. (Normal style behavior is no border overlap except
within tables.)
If there is a margin between the borders (or padding between a parent and
child’s borders), ‘fill’ expands the color of the first border (left or top) up
to the next border, so there is a wide border between the blocks. If there is no
margin, fill means the same as ‘none’ -- that is, the adjacent borders touch but
do not overlap.
In the case of a margin (or padding) between the borders, all the styles except
for ‘fill’ are assumed to mean ‘normal’. Since no border overlap is possible
(without filling), ‘normal’ and ‘none’ mean no overlap. And all of the ‘lap’
styles are ignored as no overlap is possible.
When there is no margin (or padding) between the borders, ‘fill’ means ‘let the
borders touch but do not overlap them. The ‘lap’ styles come into play here only.
To handle the case where adjacent elements (parent-child, left-right, or
top-bottom) have different borders, the ‘lap’ styles decide which border style
will be displayed. This assumes that the adjacent elements have the same
border-overlap styles.
When the adjacent elements (again visibly adjacent, either side-by-side or
parent-child appearance, not necessarily adjacent within the HTML file) have
different border-overlap styles, some disambiguating rule needs to be
formulated. I am currently considering the use of the FIRST element’s style as
the controlling value. This would let the parent block’s border-overlap style
overrule the child block’s and the first (topmost in vertical block sets and
leftmost in horizontal block sets) block’s border-overlap style would overrule
the subsequent block’s style.
Other rules are possible, such as: The further down on the border-overlap styles
list, the higher priority; this means that everything overrides ‘normal’, ‘fill’
overrides ‘none’, ‘lap’ overrides ‘fill’, ‘lap-min’ overrides ‘lap’, and
‘lap-max’ overrides ‘lap-min’.
The special border styles for within table elements (‘border-collapse’,
‘border-spacing’, and ‘empty-cells’) have different assumptions than the
proposed ‘border-overlap’ styles, as table cells (<td> or <th>) have no
individual padding, border, or margin styles.
--
James Elmore
Received on Monday, 9 July 2007 00:43:01 UTC