- 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