- From: Benjamin Poulain <bpoulain@apple.com>
- Date: Fri, 10 Oct 2014 23:31:02 -0700
- To: www-style list <www-style@w3.org>
Hi, One problem I am interested in solving is the inability to format documents that do not have a strong hierarchical structure. For example, let's take: <h1>Title 1</h1> <h2>Subtitle</h2> <p>Paragraph1</p> <p>Paragraph2</p> <h1>Title 2</h1> <p>Paragraph3</p> <p>Paragraph4</p> A common use case is styling the first paragraph after a title (for example, using ::first-letter). We can try: h1+p::first-letter but that is too strong, it does not patch Paragraph1. We can try: h1~p::first-letter but that is too weak, every paragraph matches. My current idea to solve those cases is to extend the ~ combinator to take a selector filtering the traversal. Something of the form: a ~(b) c Traversal to find "c" would 1) Evaluate "c" on a sibling. 2) If [1] fails, evaluate b on the sibling. 3) If [2] succeed, go to the next sibling. 4) If [2] fails, fail to match. The use case above can be written has: h1 ~(:not(h1, p)) p Which is traverse from <h1> to a <p> but never skip over a <h1> or <p>. The same principle could be used for descendant selector for generality. For example, an image not in a link: img:not(:any-link *) can be rewritten as * >>(:not(:any-link)) img which is cleaner in my opinion. Any interest? Benjamin
Received on Saturday, 11 October 2014 06:32:08 UTC