- From: Sanket Joshi via GitHub <sysbot+gh@w3.org>
- Date: Wed, 03 Mar 2021 19:53:34 +0000
- To: public-css-archive@w3.org
Below are some options that I recall discussing in the past: (1) Priority as an attribute on `Highlight`. This is what we have in the spec today. Usage would be: ``` <style> p::highlight(foo) { background-color:yellow; } p::highlight(bar) { background-color:orange; } </style> <body>Some text <script> let textNode = document.body.firstChild; let r1 = new Range(); r1.setStart(textNode, 0); r1.setEnd(textNode, 6); let h1 = new Highlight("foo", r1); let r2 = new Range(); r2.setStart(textNode, 3); r2.setEnd(textNode, 9); let h2 = new Highlight("bar", r2); CSS.highlights.add(h1); CSS.highlights.add(h2); // If we paint now, h2 will paint above h1 since there is no explicit priority and h2 was registered later. h1.priority = 1; // Now h2 will paint above h1. </script> ``` If two highlights have the same priority, the order in which they are registered in the `HighlightRegistry` is used as a tiebreaker. (2) Priority as a CSS property. Though this feels more _CSS-y_ and there is prior art for this with `z-index`, this may present a problem for highlight overlays. The css-pseudo-4 spec mentions that there is [a single highlight overlay for the entire document per highlighting type](https://www.w3.org/TR/css-pseudo-4/#highlight-bounds). With priority as a CSS property, authors could write this: ``` #p1::highlight(foo) { priority: 1 } #p1::highlight(bar) { priority: 2 } #p2::highlight(foo) { priority: 2 } #p2::highlight(bar) { priority: 1 } ``` If foo and bar overlap, foo will paint below bar in #p1, but above in #p2. This feels like a violation of the "single overlay for the entire document" concept. (3) Do not introduce any CSS property or attribute for priority, and just use the order of highlights in the `HighlightRegistry`. We would instead add methods like the ones below to `HighlightRegistry`, to allow reordering of highlights: ``` append([new highlight]) prepend([new highlight]) insertBefore([new highlight], [reference highlight]) ``` This would also mean that `HighlightRegistry` can no longer be `setlike` - it will need a custom implementation. Amongst the three, I still prefer option 1 - what we have today - since it avoids the problems of option 2, and we can continue to take advantage of `setlike` for the `HighlightRegistry`. Would be great to hear the thoughts of others. -- GitHub Notification of comment by sanketj Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/4591#issuecomment-790012016 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Wednesday, 3 March 2021 19:53:36 UTC