Re: [selectors] What is the order of evaluation of :matches() and :not()?

On Aug 28, 2014, at 3:30 PM, Tab Atkins Jr. <jackalmage@gmail.com> wrote:

> On Fri, Aug 29, 2014 at 8:08 AM, Benjamin Poulain <bpoulain@apple.com> wrote:
>> On Aug 28, 2014, at 2:35 PM, Boris Zbarsky <bzbarsky@MIT.EDU> wrote:
>>> On 8/28/14, 5:30 PM, Benjamin Poulain wrote:
>>>> One obvious example is the matching of :visited. Let say we have “:matches(:visited, .foobar)”. If a link has the class foobar, its style varies if the engine evaluate selectors from left to right or right to left.
>>> 
>>> It shouldn't.  Can you give an actual example where it does?
>> 
>> Let say we have:
>> 
>> <style>
>> :matches(:visited, a) {
>>    display:block;
>>    width: 100px;
>>    height: 100px;
>>    background-color: red
>> }
>> </style>
>> <a href=“http://w3.org”>link</a>
>> 
>> If only the first one is match, we are in the “visited” case, and none of the properties apply. If the second one is matched, all the properties apply.
> 
> That still has nothing to do with ordering, unless you assume that
> :matches() short-circuits and stops when it first finds a match. (It
> probably does, in implementations, but it's not specified as such.)
> 
> If this example really does give any problems for a browser, it's a
> bug in their handling of the "UAs may [...] implement other measures
> to preserve the user’s privacy while rendering visited and unvisited
> links differently." escape hatch.  They should ensure that the
> :visited styling restrictions don't apply to :visited in :matches()
> when a non-:visited branch also matches.

As I said in the original email, such interpretation is completely fine with me. I would just like it to be clear/explicit in the text to avoid differences between engines.

Benjamin

Received on Thursday, 28 August 2014 22:37:42 UTC