- From: Andrew Fedoniuok <news@terrainformatica.com>
- Date: Thu, 8 Dec 2011 19:44:58 -0800
- To: "Tab Atkins Jr." <jackalmage@gmail.com>, "L. David Baron" <dbaron@dbaron.org>
- CC: "fantasai" <fantasai.lists@inkedblade.net>, <www-style@w3.org>
-----Original Message----- From: Tab Atkins Jr. Sent: Thursday, December 08, 2011 4:12 PM To: L. David Baron Cc: fantasai ; www-style@w3.org Subject: Re: [css3-flexbox] alignment test >On Thu, Dec 8, 2011 at 4:06 PM, L. David Baron <dbaron@dbaron.org> wrote: >> On Thursday 2011-12-08 12:15 -0800, fantasai wrote: >>> I don't think creating elements or pseudo-elements is a good way of >>> controlling spacing. That's what margins are for. We've come a long >>> way since using spacer GIFs, please let's not go back to that. >> >> I agree that pseudo-elements are too heavyweight here: they're more >> complex for authors to write, and they're also large in terms of >> memory and performance footprint (more items in the rendering tree), >> which does matter to authors and users. > >How often are spacers used, though? They're useful to split something >apart into two ranges, but what else? > >If they're used a lot, is my #3 idea better? Flexible margins are not used a lot of course. But still used. Why not just to use most natural solution? Let's say someone will need to define flexible right *and* bottom margins, how this supposed to be done with pseudo-elements? Anyway here is the list of cases where flexible margins are used in built-in style sheets of my engines: 1. To stick <footer> to the bottom of the view ( if there is free vertical space ): body > footer { margin-top:*; } 2. To align content of a button into center vertically: button > :first-child { margin-top:*; } button > :last-child { margin-bottom:*; } (vertical-align for inline-block elements does different thing) 3. In menu items to align <span.accesskey> to the right/left: menu > li > span.accesskey { width:max-intrinsic; margin-left:*; /* spring to attach it to the right */ margin-right:0; } menu > li > span.accesskey:rtl { width:max-intrinsic; margin-right:*; margin-left:0; } (If to use spacer::pseudo-element it is actaully a question how they should play with ltr/rtl, I expect problems in this area. ) 4. Quite a lot of cases in <widget.calendar> ( <input type=month>, <input type=datetime>, etc. ) to align calendar components properly. See: http://www.terrainformatica.com/w3/builtin-calendar.png In calendar topmost row has this structure: <header> <button.prev> <div.month> <div.year> <button.next> </header> and styles like button.prev { margin-right:*; } button.next { margin-left:*; } are used to align things properly. 5. fieldset/legend alignment: fieldset > legend { width: max-intrinsic; max-width: 90%; margin-left:5dip; margin-right:*; } fieldset:rtl > legend { margin-right:5dip; margin-left:*; } 6. Spin buttons alignment in <input type=number step=1 > And that is just master-css that defines built-in elements. -- Andrew Fedoniouk http://terrainformatica.com
Received on Friday, 9 December 2011 03:45:38 UTC