- From: Ian Hickson <ian@hixie.ch>
- Date: Sun, 14 Sep 2003 12:36:51 +0000 (UTC)
- To: "staffan.mahlen@comhem.se" <staffan.mahlen@comhem.se>
- Cc: "www-style@w3.org" <www-style@w3.org>
On Sun, 14 Sep 2003, staffan.mahlen@comhem.se wrote: > > Yes, but could it not be useful to change the way of handling it? > (please note that i am really not sure myself). Designing standards tends to go in the opposite direction -- think of something useful, then try to design it -- rather than specifying something, then trying to find a use for it! :-) (Granted, sometimes us W3C members might give one the opposite impression, but...) > What i am thinking is that possibly the display: list-item way of > defining it makes for to big a separation from the ::before way of > doing lists, but they are basically the same concept. That's what CSS2 thought. We are moving away from that direction because it caused all kinds of difficult problems. > The above may all be nitpicking and is not a big issue in actual > usage, but it think it would be neat if things were defined so that > li {display: inline} > would "just work" and render as an inline list with the appropriate > "indicator" before each item. I know what you mean, I just don't see a workable way of doing it. At the moment, making a list-item is as simple as: foo { display: list-item; } ...which does _everything_, from setting up the counter to adding a marker. If we change it to be: foo { display: block; } foo::marker { content: list-item; } ...then we are making the simple case more complicated. I suppose it could work... but then you have to define '::marker' on all box types, including table-cell and table-row and inline... which I suppose wouldn't be impossible to do... Hmm. Let me think about this. > I suppose that depends on what you mean by the rule. To make myself > more clear test the following in your browsers of choise: > > h2 {display: list-item} > > <h2>First</h2> > <h2>Second</h2> > <ol> > <li>Text > <h2>Third</h2> > <h2>Fourth</h2> > </li> > <li>Text</li> > </ol> > <h2>Fifth</h2> That would result in: 1. First 2. Second 1. Text 2. Third 3. Fourth 4. Text 2. Third ...assuming: ol:before { counter-reset: list-item; } ...in the UA sheet. This is correct given the structure. If you don't want that, then you'd do: li::before { counter-reset: list-item; } ...or, more likely: h2 { display: list-item; } h2::marker { content: counter(h2) "."; counter-increment: h2 1 list-item -1; } ...which I admit sucks. Hmm. Maybe there is value to changing the way list-item works. How about saying '::marker' is generated whenever its 'content' computes to something other than 'inhibit', but 'normal' for '::marker' computes to 'inhibit' unless its superior parent's 'display' computes to 'list-item'? Then 'display:list-item' can still be in charge of the 'list-item' counter, but to do the h2 case you would just do: h2::marker { content: counter(h2) '.'; counter-increment: h2; } ...and not have to change anything else... Hmm... I think that could work... -- Ian Hickson )\._.,--....,'``. fL U+1047E /, _.. \ _\ ;`._ ,. http://index.hixie.ch/ `._.-(,_..'--(,_..'`-.;.'
Received on Sunday, 14 September 2003 08:36:53 UTC