Re: flowing around both sides of a float

On Jan 1, 2008, at 1:43 PM, James Elmore wrote:
> On Jan 1, 2008, at 12:31 PM, John Oyler wrote:
>> On Jan 1, 2008, at 3:21 PM, Brad Kemper wrote:
>>> On Jan 1, 2008, at 6:27 AM, David Woolley wrote:
>>>> James Elmore wrote:
>>>>
>>>>> some of the proposals will be difficult to implement. Also,  
>>>>> some will not be immediately used, simply because they are not  
>>>>> known to be available. But providing tools which make CSS a  
>>>>> more complete system of styling documents will make CSS a more  
>>>>> useful tool set.
>>>>
>>>> One of the things that makes a good computing standard is that  
>>>> it achieves a lot with a little.  One of the things that leads  
>>>> to the eventual death of computing standards is that whilst they  
>>>> start that way, they eventually try to do everything.  As a  
>>>> result they get too complex (CSS is already well beyond the  
>>>> point where most authors understand it well enough to be able to  
>>>> know whether there are features to do things they want).
>>>
>>> In this case (float:center), the "float" concept is well  
>>> understood, and "center" is a common value to accompany "left"  
>>> and "right" as keywords to describe horizontal position. Authors  
>>> will not have a hard time understanding the addition of the  
>>> "center" value to the "float" attribute. They may, on the other  
>>> hand, have a hard time understanding why it is missing.
>>>
>>> Float (or something like it) would be especially useful if it  
>>> could be positioned absolutely, yet still affect the flow (so  
>>> that inline elements and other traditional floats did not overlap  
>>> it, and would be effected by its margin). The details of how that  
>>> would work would probably be more complex, but the effect that  
>>> float:center should have is pretty clear.
>>
>> It isn't clear how this could work. Float:absolute, and then it  
>> uses left/right/top/bottom for positioning? I'm all for  
>> float:center in principle at least, but at least I could wrap my  
>> head around how it's supposed to work. Something more flexible  
>> isn't as obvious even when I spend time thinking it through. Also,  
>> would there be any point in a float:center if it were implemented?  
>> If you can derive one behavior from the other...
>>
>
> I am proposing the ability to allow CSS to control the flow around  
> any element (text, etc.). The problem (and the benefit) with  
> 'float' is that is does more than one thing at a time -- it is a  
> shorthand for 'make this a block, move it to the side, watch out  
> for other 'floats', reset the line box and reflow the contents of  
> the line box, and allow the line box to return to its previous size  
> when the element is passed'. If CSS allows the positioning of  
> elements, why not have a style which allows other elements to flow  
> around the positioned elements. Absolute positioning, relative  
> positioning, etc., might be very useful when combined with 'flow- 
> around.' Agreed that it would be difficult to implement, but it  
> would make the understanding of 'float' simpler -- just say that  
> 'float' is a relative positioning, followed by a 'flow-around.'
>
> Once this style is possible, the designer can use 'position:  
> absolute;' or 'position: relative;' or any other CSS positioning  
> style to place the element, then use 'flow-around' (maybe I called  
> it 'wrap' in another email) to make the surrounding elements move  
> out of the way.
>
> I am not trying to add infinite arbitrary styles to CSS; I AM  
> trying to add styles which are clearly missing from CSS, just as  
> 'float: center;' is a clearly missing piece of the puzzle.

I think that is the correct thing to do, even if I would solve it a  
bit differently.

> But, I have seen so many problems in computers (especially  
> programming and user interfaces) where the ability to do several  
> things with one action/command causes problems when only part of  
> the ability is really needed for what the user really wants.  
> Therefore a user needs to cancel out part of the results because  
> there is no command for just the part of the actions the user wants  
> to accomplish, and he/she needs to use the 'shorthand' and negate  
> part of what the shorthand does.
>
> Just a short example: I have an inline element (possibly an image,  
> but not necessarily) in the middle of a paragraph. I want the  
> element to remain at the exact position in the paragraph, but have  
> the following text wrap around it.

For my money, I would like to see something like that handled by  
"float:absolute", as those 2 words mean something to people  
experienced with CSS, and would aid in understanding of what it would  
do, without a whole new context of meaning. For instance, like this:

p #wrapaoundme { float:absolute; left:auto; top:auto; margin:0 1em  
1em 0;  }

Without numeric values for top, right, bottom, or left, it would not  
be moved from its place of creation (within your inline box). Top and  
left margins would push it to the right and bottom respectively, to  
allow you some control of how close the text was allow to come to it.  
Any numeric values for top, bottom, left, or right would be relative  
to the padding edge of the containing block (as with position:absolute).


> I can't do this with 'float' because it makes the element move to  
> the margin, and may even move the element down if there are other  
> floats already in the way.

One way or another, other floats would have to be accounted for.  
Should they move out of the way, or should your item move out of  
their way? Or should they overlap? I would think that something with,  
say, float:right, should be drawn first (since it comes earlier in  
the document), and thus determine the space available for the item  
with float:absolute.

Received on Tuesday, 1 January 2008 22:51:38 UTC