- From: James Elmore <James.Elmore@cox.net>
- Date: Fri, 20 Jul 2007 15:11:35 -0700
- To: www-style@w3.org
This is another part of my investigation into the features missing for control ‘between blocks.’ It took a while because this is part of a larger and more complex area of inter-block interactions. Enjoy! I want to start with a discussion of adding ‘position’ to the parameters of the ‘float’ styles. This will allow users to adjust the positions of floated elements (or leave the positions alone) more than just ‘float: left;’ and ‘float: right;’ permit. If the block is floated with a value of ‘position’ then the values of the ‘position’ style (static, relative, absolute, and fixed) come into effect and provide control, allowing users to float without moving, or float relative to the original position, relative to the enclosing block, and relative to the viewport. Adjusting the ‘top,’ ‘bottom,’ ‘left,’ and ‘right’ style properties allows more control of floated elements. NOTE for the Advanced Placement people: this feature would allow at least a partial answer to problem #4 in Section 8. I hope to offer more possible solutions to the problems presented in that section in future proposals. I’m not sure exactly how flowing the text boxes and blocks around the ‘floated’ block would work, especially when the floated element extends into another block. Also, positions where there is limited space (e.g., where only short words would fit on one side of the floated element) might allow some words to flow, skipping across the floated object and leaving other line blocks empty. This is all open to discussion, if the primary proposal is accepted. A short form, using 'float: static;' and the other position parameters (static | relative | absolute | fixed) could set the 'float' and 'position' parameters at the same time. This would make 'float: static;' equivalent to 'float: position; position: static;' (Relative, absolute, and fixed are possible values, as well.) To shorten the amount you read, I will use the short form in my examples. ‘Float: static;’ would not move the floated element, only allow text and blocks to flow around it. ‘Float: relative;’ would allow the floated element to move along with the text and blocks which surround it, just as a ‘relative’ element would, except the TRBL (top, right, bottom, left) parameters could move the floated object relative to its original position. Perhaps there could be another parameter which would permit the empty space where the floated object originally was positioned to remain open or to close, although the definition of 'float' would already indicate that the hole would close. ‘Float: absolute;’ would allow the floated element to be positioned in relationship to the enclosing block. This would be the closest to the current ‘float: left;’ (or right), permitting more accurate positioning of floated elements, perhaps with: float: absolute; top: auto; bottom: auto; left: 0; right: auto; producing the same effect as ‘float: left;’ Finally, ‘float: fixed;’ would place the floated element relative to the viewport. This might be harder to program, since the inline, text, and regular blocks would need to be ‘reflowed’ every time the viewport or the elements displayed in it changed. (Perhaps this could be delayed until a later release, although it seems that it might be very useful to designers.) Of course, the control of the size of the floated object is another feature of this procedure, offsetting the increase in the complexity of the styles. Using the older ‘float: left;’ would still be possible, keeping backwards compatibility with prior styles. James Elmore
Received on Friday, 20 July 2007 22:11:55 UTC