- From: <staffan.mahlen@comhem.se>
- Date: Thu, 12 Feb 2004 21:49:52 +0100
- To: "www-style@w3.org" <www-style@w3.org>
On 11 Feb 2004 at 21:40, Bert Bos wrote:
> ...The top of the
> aligned subtree is the highest of the tops of the boxes in the
> subtree, and the bottom is analogous.
> Changed definitions:
>
> 'top'
> Align the top of the aligned subtree with the top of the
line
> box.
> 'bottom'
> Align the bottom of the aligned subtree with the bottom of
the
> line box.
>
Interesting. The top of a box in the subtree in the last sentence of
the paragraph would be the top content edge i assume? I think it
might be wierd if margin/padding/border had the "expected" effect for
children of top or bottom aligned boxes but not (normally) otherwise.
To my mind this is an improvement and it does sound very reasonable
for CSS 2.1. However, personally i think that it might be wise to
consider an alternate model for inline rendering in a future version
of CSS. I would like to know if something like the following might
actually work without giving to many "backwards compatbility" issues,
or if another model could be constructed without causing to many
issues.
In case this is interesting to discuss, the rest of this message are
some more or less wild thoughts on such a model:
Each inline node (replaced as well as non-replaced) has a baseline.
The baseline of a replaced element is document language and/or UA
defined, while the baseline of a non-replaced element is defined by
its children as well as its text contents. Typically, a replaced
element such as an image would have a baseline below its bottom
margin edge, while any non-replaced elements or line box containing
text would have a baseline through its content area.
The baseline of a non-replaced inline box is defined by finding the
highest top margin edge of a child box or textnode, as well as the
lowest bottom margin edge, when the children are aligned vertically
in the box. The sum of those values is the box height.
Each box generated by an inline element is aligned versus its parent,
or if no parent exists, versus the line box. The top and bottom
values for the 'vertical-align' property are not relative to the line
box for an element that has a parent.
When calculation the edges, child boxes that have baseline as their
computed vertical-align are considered first. In the second pass when
children with vertical-align other than baseline are considered,
document order is used to set their position and caculate their
effect on the parent or line box. If for example a box holds two
images with the same distances from top margin edge to bottom margin
edge, their order becomes significant in calculating the baseline of
the box if their vertical-align differ.
I think something similar to the above might give a simpler model for
what goes where in inline rendering, if corrected and written up in
rec-talk. The idea is to vertical-align everything versus the parent,
and to let the non-replaced inlines get their height by their
contents, similar to blocks. In addition, i think allowing vertical
margin/padding/borders to "work" in an inline context would
be a good idea.
I have also been thinking about whether introducing a 'line-spacing'
property might reduce the issues with 'line-height'. This new
property would have the suggested default value of 0 to .2em, while
'line-height' would have the initial value 'auto'.
I've also been considering whether it would be feasible to allow
width/height for non-replaced inline elements, for instance by making
them apply to every box that element generates, but that might
introduce some interesting issues with horizontal positioning on the
line and how to scale the baseline as well as overflow considerations
i suppose.
One obvious difference in many pages seem to be (assuming an image
higher than 1.2em)
<a href="dummy" style="border: solid"><img src="dummy.png"/></a>
where the a-box would in this model be high enough to potentially be
the thing you click on when activating the link as you press the
image. This seems like a good thing to me.
Another example that would seem to work better in a model like the
above is of course
Text row one</br>
<span style="border-top: solid .5em">Text row two</span>
but that is for obvious reasons never used.
/Staffan
Received on Thursday, 12 February 2004 15:49:47 UTC