- From: Ojan Vafai <ojan@chromium.org>
- Date: Sat, 20 Oct 2012 10:30:01 -0700
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: www-style list <www-style@w3.org>
- Message-ID: <CANMdWTvBLpsacs50K3sbamTXKYghbJDL4c74B8dETKFChMSD2Q@mail.gmail.com>
On Fri, Oct 19, 2012 at 3:40 PM, Tab Atkins Jr. <jackalmage@gmail.com>wrote: > Hey all! I've been complaining for some time about the fact that > 'display' unnecessarily conflates "layout mode" with "role in parent's > layout mode". I've had mini-rants about this in Lists and Flexbox, > and on the list a lot of times. Further, authors have given > consistent feedback over the years that indicates the conflation of > 'display:none' with the other values is confusing or hard to work with > - in particular, they'd like to be able to toggle "none"-ness without > disturbing the original 'display' value, or having to manually > remember what the old value was. > > As such, I've written up a first draft of a proposal to split > 'display' into sub-properties: > <http://dev.w3.org/csswg/css-display-3/>. (It currently has the ED > styling, but as I've indicated in the Status section, it's technically > an Unofficial Draft until the WG approves it.) > > There's some prior art for this draft. Old revisions of the Template > Layout draft included 'display-model' and 'display-role' properties, > which were cognates to 'display-inside' and 'display-outside' in my > draft. Over two years ago I authored a blog post > <http://www.xanthir.com/blog/b45F0> exploring the idea. > > This draft actually introduces very little new functionality. The > most important innovation is just that several independent concepts > that were previously wrapped together in 'display' are now separated, > so they can be independently toggled/cascaded. In particular, an > element's layout mode is determined by 'display-inside', while the > element's role in its ancestor's display mode is determined by > 'display-outside'. The "display:none" functionality is handled by the > 'display-box' property, while the generation of ::marker > pseudo-elements is controlled by 'display-extras'. (Both of these > latter property names are pretty sucky. Feel free to bikeshed them.) > I like the direction this is going. Mainly, I like that this spec minimizes potential combinatorial explosion of possibilities that browser vendors need to support. I think if we make this too complicated, getting interoperability is going to be a painful decade long process and will be difficult for web developers to wrap their heads around. In that vein, I don't really see the benefit of display-extras. Can we just make list-item it a display-outside value? It'll still have some special behavior that other display-outside types can't reproduce, but that seems OK to me. For example, I don't see a use-case that requires being able to have inline list-items. You can't do that today, right? > The only fundamentally new pieces of functionality are: > > 1. Any type of element can generate a ::marker pseudo. ::marker is > exactly like ::before, except that it has some special positioning and > content rules in Lists, so this is nothing particularly special. It > just falls out of the model more-or-less by accident. > 2. You can toggle between "display-box: normal;" and "display-box: > none;" without affecting the element's layout mode or role. > 3. 'display-box' has a new value, "contents", which has been requested > and talked about in the past - it suppresses the element's own box > generation, but not that of its children - in other words, for layout > purposes it acts as if the element was replaced by its children. This > is useful for layout modes, like Flexbox, that privilege children over > arbitrary descendants, because sometimes you need a wrapper element > (for script or cascade purposes), but still want the children of the > wrapper to interact with the non-wrapper elements around them. It's > also useful for Web Components, for similar reasons - many things are > vastly simplified by making the shadow root a wrapper element, but the > extra element can make layout harder. > > Thoughts? Would the WG be okay with taking this on as a work item? > It should be low-maintenance and pretty quick to advance, because I'm > not trying to do very much with it. In particular, I'm *not* wanting > to mix any block-layout-related stuff into this draft - that should be > done in an explicit Block Layout spec (Anton, your calling!). That > said, there's the potential for a little more work going on in this > spec. I have issues called out inline for additional things we could > usefully put into the draft. > > ~TJ > >
Received on Saturday, 20 October 2012 17:30:53 UTC