- From: Mark Crutch <mark.crutch@gmail.com>
- Date: Sat, 05 Mar 2016 07:30:51 +0000
- To: "Tab Atkins Jr. " <jackalmage@gmail.com>
- Cc: www-style list <www-style@w3.org>
- Message-ID: <CANwVQOd=_ROHgN8pQRusCZGmKMUZ62n6oEne+jn+Ez+DMLttAA@mail.gmail.com>
On 4 March 2016 at 20:11, Tab Atkins Jr. <jackalmage@gmail.com> wrote: > On Wed, Mar 2, 2016 at 5:32 AM, Mark Crutch <mark.crutch@gmail.com> wrote: > > I would like to put forward a suggestion to the WG to extend the scope of > > the counter() function to allow it to be used in a CSS property wherever > a > > numeric value is allowed. This would only apply to counters of the > "decimal" > > type. > > ... > > > But a counter-value() function that resolved to the numeric value > would work. One issue is that counters are, in at least some > browsers, *terribly* slow and hacky, so exposing counters for more > things might not go over well. > > ~TJ > counter-value() sounds good to me. It's a shame about the speed in some browsers, but even with that limitation I still think this would be a worthwhile addition to the spec. In particular: * More use of counter values within CSS might encourage browser vendors to improve the performance of their implementations. * Without something like this authors can end up having to manually specify values that could otherwise be automatically generated - as in the flexbox order example in my original post. That not only places more of a burden on the author, but leads to less maintainable code as any changes to the DOM order would require a corresponding manual update to the CSS. * Alternatively authors might automate the process with JS - typically by using querySelectorAll() then looping over the resultant collection to set a value via the style property. This is harder to write, fails when JS is inactive, and must surely be slower than even the worst of the browsers' native counter implementations. It's also likely to lead to FOUC and reflow issues as calculating elements' final positions isn't possible until the JS has run. In my specific case there are potentially several dozen flexbox children (the amount varies, as it's data driven), and I only want to explicitly change the order of one or two of them. By necessity I'll be using a JS solution for now, but it does feel like using a hammer to crack a nut and I would definitely prefer a declarative solution that's kept entirely in the CSS. Mark -- *The Greys*, *Elvie* and *Monsters, Inked* webcomics Website http://www.peppertop.com/ Facebook http://facebook.com/PeppertopComics Twitter https://twitter.com/PeppertopComics
Received on Monday, 7 March 2016 12:51:16 UTC