- From: Ernest Cline <ernestcline@mindspring.com>
- Date: Tue, 01 Apr 2003 05:39:22 -0500
- To: www-style@w3.org
Summary: While I still feel that :here (or whatever you want to call it) is
too limited to be of much use, this discussion has convinced me that a generic
mechanism to allow a link to be selected based on the URL it links to would be
a useful extension to CSS. What follows is a reply that gives my reasons for
having reached this conclusion and a description of my proposed mechanism for
doing so.
On 31 Mar 2003 at 22:57, Larry wrote:
> Ernest Cline wrote:
> > I am willing to be convinced that :here is a good idea, but I haven't seen
> > any supporting reasons given as to why it would be.
>
> If you are as willing to listen as you say you are, please allow me try
> again to describe exactly what the feature is that we've been discussing
> (I guess I didn't explain it very well before). This time I'll give a
> couple examples.
>
> > I agree that for a user (who has no control over the format that the
> > author has chosen for his local URLs) [href^="#'} cannot serve as an
> > adequate substitute for the proposed :here. However, I have not seen
> > a reason presented why a user would care about differntiating between
> > links in the current page and those that are not. Unless someone can
> > come up with a reason other than the user might think that its a neat
> > idea, I see this as being something that would add bloat to CSS
> > without purpose.
>
> The reason is that it's a huge hassle to acheive this important feature
> with existing methods. Furthermore, because it's somewhat complex to
> achieve, many web authors simply don't bother.
>
> Here are two examples:
>
> Example 1:
> Go to the W3C home page, http://www.w3.org.
The major difference between your two examples is that in Example 1 the link
is changed to being not a link while in Example 2 the link is made to not look
like a link. Now unless something like the stillborn Behavioral Extensions to
CSS gets implemented, :here is not going to be able to make a link not be a
link, so I'll base my reply on Example 2.
> Example 2:
> Go to http://www.zeldman.com.
Well first off, the author could have avoided the use of the ids (assuming
that attaching CSS was the only use of them) by using a CSS2 selector. (For
the example given, it would be [href="/"] .) So already in CSS there is no
need to add to the HTML code (except in the <style> element) to support this
desired behavior. However, your other point that this requires the CSS to be
included in every page across the site has validity and needs to be addressed.
Having had a chance to think over this, I can think of two methods, one in
existing CSS and one that would require extending CSS in a more generic
manner, that would provide much the same functionality without requiring a
:here pseudo-class.
Method 1 - .here
This wouldn't do all the work of :here, but it would do most of it
Instead of :here use .here and in each page apply the class here to the local
links in the source document. This has the same advantage of :here of allowing
the CSS to only be defined once. It does have the disadvantage of requiring
the author to include the class on all of those links, but at least for the
examples you cited there was only one navbar link to deal with on each page. A
small hassle, but since updating the style can be done in just one place it is
not a serious one in my opinion.
Method 2 - :url("foo") and :baseurl("foo")
If CSS is extended, then instead of making the extension apply to just one URL
as :here would do, a more generic mechanism would be desirable.
:url("foo")
This applies if the URL of the href of the link is equivalent to that given as
an argument. If a specific identifier within the page is wanted, it must be
given explicitly. The set of links selected by :url("foo") and
:url("foo#bar") is disjoint. However, (assuming that the type of the link is
"text/html") the selector :url("foo") should match both href="foo" and
href="foo.html". The selector :url("") matches the current web document.
:baseurl("foo")
This applies if the base of the URL of the href of the link is equivalent to
that given as an argument. A specific identifier within the page need not be
given given explicitly. The links selected by the selector :url("foo#bar")
are a subset of those given by :url("foo"). For example, the selector
:baseurl("//www.example.com") would apply to any link that pointed to a
document on www.example.com, while the selector :baseurl("/foo") would apply
to any page on the server of the current page that was accessed via the /foo
path of the server of the current page. The selector :baseurl("") matches the
current web document and all links to identifiers in it.
One possible use of this would be to give links for trusted sites a different
appearance than those of other links, and I can think of several others as
well. While none of these uses by itself is sufficiently compelling for me to
be in favor of extending CSS to accommodate it, this generic mechanism is
broad enough to accommodate them all and others that I have not thought of.
The set of possible uses is broad enough that I could support this more
generic extension,
Received on Tuesday, 1 April 2003 05:38:59 UTC