- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Mon, 25 Apr 2016 23:16:27 +0300
- To: "Tab Atkins Jr." <jackalmage@gmail.com>, www-style list <www-style@w3.org>
On 04/21/2016 09:24 PM, Tab Atkins Jr. wrote: > Recently HTML, under advisement from fantasai and I, specified that > the "disclosure triangle" on a <summary> element (part of the > <details> element) is displayed using a list marker, by setting > <summary> to display:list-item. > > Unfortunately, this decision came with some additional baggage that > we're now having to work around in HTML. In particular: > > * display:list-item also automatically increments the list-item > counter, which is used by HTML's <ol> element. This meant that using > a <details> inside of an <ol> would cause the next <li> to jump ahead > by 2. There's a simple fix for this, too: make 'display' not set any magic counters. The HTML UA style sheet can set the 'list-item' counter in a counter-increment rule. This also makes 'list-item' less magic. It only affects the creation of ::marker. Chrome automatically increments items with 'display: list-item'; however Firefox does not. > I propose a simple solution: rather than having "display:list-item" > cause the ::marker to be generated, as is specced today, we make > ::marker *always* exist, identical to ::before. For normal elements > you have to explicitly give it a 'content' value, just like ::before. > "display:list-item" then just makes the ::marker pay attention to the > list-style-* properties. As Ting-yu wrote, adding universal pseudo-elements is not "simple". > fantasai offers an alternate proposal: leave <summary> as is, leave > the hack for the first problem, but make the list-style-* properties > actually only apply to the ::marker pseudo, rather than to list items. > Inheritance ensures that we maintain today's behavior, but HTML can > then set list-style-position:inside directly on the summary::marker, > and avoid the second problem entirely. Full alternate proposal: * 'display: list-item' does not magically set a 'list-item' counter-increment; this is handled by the HTML UA style sheet * 'list-style-*' apply to ::marker, not to list item elements; since they inherit setting them on the list item will continue to work as expected This proposal has two advantages: * avoids the creation of a universal ::marker element * maintains application of 'list-style' properties to styling markers, for which these properties are very useful and usable. If 'list-style' no longer applies to ::marker on <summary>, then we lose the simple interface that it offers for setting the marker style via 'list-style-type' and 'list-style-image', and furthermore we lose control over the position of the marker that is offered by 'list-style-position'. The **only** complaint about this is the name "list-style" being applied here. Imho think this is an acceptable suboptimal legacy situation. I strongly believe the benefits of its interface are greater than any superficial concern over its name. ~fantasai
Received on Monday, 25 April 2016 20:17:06 UTC