Re: a:hover and a:active and named anchors

Ian Hickson wrote:
> 
> Jerry Baker wrote:
> 
>> Ian Hickson says:
>>
>>> 3) Simply say:
>>>    :link:hover, :visited:hover
>>
>> And this works in all browsers that a:hover works in?
> 
> 
> Yes. Did you read the reference I gave?:

IMHO, the problem Jerry originally identified isn't so much that there's 
no way to get the desired behavior in standards-compliant browsers, or 
even to get the desired behavior cross-browser. It's that historically 
and even today, web authors are making an exceptionally poor showing of 
actually *doing* things that way.

This suggests that either browsers are going to have to use "quirks" 
mechanisms once again to ensure that a:hover works in the 
wrong-but-expected way on existing pages, or that CSS needs to provide a 
way to support this "wrong" behavior officially *without* the web author 
having to do the right thing.

In general, it seems to be easy to advocate to developers if you can 
provide a simpler way to do what they're already doing, that works 
without any major drawbacks, but it seems to be exceptionally hard to 
advocate a 'better way' that involves more complexity for them, even if 
it demonstrably *is* better.

We're asking developers to go from the familiar:

a:hover { ... }

To:

:link:hover, :visited:hover { ... }

The latter selector is nearly three times as long and has five (!) times 
as much punctuation. It also has considerably less mnemonic value (the 
first half is good - "'link' refers to links, great" - but then it 
throws it all away - "isn't something that's 'visited' still a link? I 
already specified links!").

Do you really expect to be able to successfully advocate this in time 
for there to be essentially no pages out there doing it wrong when 
browsers come out that do the right thing? Or are you resigned to using 
quirks modes for yet another generation of browsers?

If CSS could be done all over again, I'd suggest that :link should apply 
to both visited and unvisited links, and :visited should have a 
corresponding :unvisited pseudo that would match specifically unvisited 
links. Then again, I'd also use my time machine to redo HTML so that <a 
name> wasn't the same element as <a href> and this whole thing would be 
moot. Unfortunately, as they say, you "can't get there from here"...

Stuart.

-- 
Stuart Ballard, Programmer
NetReach - Internet Solutions
(215) 283-2300, ext. 126
http://www.netreach.com/

Received on Tuesday, 30 July 2002 14:03:30 UTC