- From: Johannes Wilm <johanneswilm@vivliostyle.com>
- Date: Fri, 6 Nov 2015 03:55:19 +0100
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: Florian Rivoal <florian@rivoal.net>, "L. David Baron" <dbaron@dbaron.org>, Jonathan Kew <jfkthame@gmail.com>, fantasai <fantasai.lists@inkedblade.net>, Koji Ishii <kojiishi@gmail.com>, "www-style@w3.org" <www-style@w3.org>, Rossen Atanassov <ratan@microsoft.com>, "Elika J. Etemad" <fantasai@inkedblade.net>
- Message-ID: <CABkgm-QkTvKhRXTpHVV7pXpP4TpBUi5KTV9=bD-89UDzxcw79A@mail.gmail.com>
On Fri, Nov 6, 2015 at 12:52 AM, Tab Atkins Jr. <jackalmage@gmail.com> wrote: > On Thu, Nov 5, 2015 at 3:37 PM, Florian Rivoal <florian@rivoal.net> wrote: > >> On 06 Nov 2015, at 08:10, Tab Atkins Jr. <jackalmage@gmail.com> wrote: > >> On Wed, Nov 4, 2015 at 6:00 PM, Johannes Wilm <johannes@fiduswriter.org> > wrote: > >>> On Thu, Nov 5, 2015 at 1:59 AM, L. David Baron <dbaron@dbaron.org> > wrote: > >>>> On Wednesday 2015-11-04 16:27 -0800, Tab Atkins Jr. wrote: > >>>>> It's not a corner case. All the *examples* have full-width elements > >>>>> being floated up or down, but that's irrelevant; in practice, a lot > of > >>>>> top/bottom floats will be shrinkwrapped or otherwise sized to > >>>>> something other than 100%. Horizontal positioning is a requirement > >>>>> *now*. > >>> > >>> If browsers are interested even in 2D floating, then all the better! > >> > >> It's not that "browsers are interested even in 2D floating", it's that > >> page floats *are* 2d floating. Restricting the author to only > >> specifying the position in one axis doesn't make it 1d unless there's > >> a natural and appropriate value for the other axis that can always be > >> determined automatically. (For line floats there is - the line they > >> appear on, or as close as they can get to that if they wrap.) > > > > Page floats are certainly not positioned on a single straight line, so > > in that sense they are not 1D, and you can call they 2D if you want. > > But they do not move to arbitrary positions in a 2D plane (or even to > > arbitrary positions along the edges of a 2D shape). The positioning > > of floats is more logical than geometric. I don't think it is reasonable > > to assume a syntax made for arbitrary 2D positioning will just work, > > without figuring out what it actually means. Maybe it does, but > > that needs to be shown, not assumed. > > I didn't say you needed a syntax for *arbitrary* 2d positioning. I > agree that's probably overkill; real-world examples tend to position > on the 8 compass points of the box's boundary. > > But it's still 2d positioning. You still need to be able to specify > whether you want the top-left or the top-right corner. "float: top;" > is ambiguous; while we can and should define a default horizontal > position for that, we need to enable people to declare it themselves > too. > > I'm not sure what's confusing or controversial about this, so I assume > there's a communication breakdown here. :/ > "float: top left"; may work for one float. But what if we have a second float that also wants to go to "float:top left"? Does it stack to the right of the first float or below it? Both types of stacking can be found in magazines and books. So if we do "float: top left" and want to cover all that is common and natural, then we also have to have some way of saying whether it is more important for the float to be at the left edge or at the top edge. And if we do that, and we have a float that has prioritized the left edge ("float: top left left") where does it stack if the entire left edge of the float-reference is filled up by other floats? Does it then try to stack on the top edge instead? What if both the entire left and top edges are filled with floats? Does it defer to the next fragment or does it try to stack in top-left most corner that is still unoccupied? etc. These are some of the questions which made me think that this may end up being too complex for anything browsers will want to implement, and we do need to make the cut-off not just before edge cases but also some book designs may be too complex to be supported by browsers. But I can see how we could get some 2D-seeming functionality. For example, instead of just having the bottom right and top left corners, as we do now, we could have a way of saying: - "This is a top float. If it doesn't fill the entire width, make it move to the left most edge." - "This is a right float. If it doesn't fill the entire height, make it move to the top edge." That would only introduce two new floating locations and thereby give some light 2D support and one would be able to float to all four corners, without really making placement more complex. It would still be assumed to be 100% in width/height for the purpose of figuring out where tho place it, and the stacking direction would still be clear. -- Johannes Wilm
Received on Friday, 6 November 2015 02:55:56 UTC