home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


HTML: The Definitive Guide

Previous Chapter 7
Links and Webs
Next
 

7.3 Creating Hyperlinks

Use the HTML <a> tag to create links to other documents and to name anchors for fragment indentifiers within documents.

The <a> Tag

HTML authors use the <a> tag most commonly with its href attribute to create a hypertext link, or hyperlink, for short, to another place in the same document or to another document. In these cases, the current document is the source of the link; the value of the href attribute, a URL, is the target.

You may run across the terms "head" and "tail," which reference the target and source of a hyperlink. This naming scheme assumes that the referenced document (the head) has many tails that are embedded in many referencing documents throughout the Web. We find this naming convention confusing and stick to the concept of source and target documents throughout this book.

The other way you can use the <a> tag is with the name attribute to mark a hyperlink target, or fragment identifier, in an HTML document.

It is possible to use both the name and href attributes within a single <a> tag, defining a link to another document and a fragment identifier within the current document. We recommend against this, since it overloads a single tag with multiple functions, and some browsers may not be able to handle it.

Instead, use two <a> tags when such a need arises. Your HTML source will be easier to understand and modify, and will work better across a wider range of browsers.

Allowed content

Between the <a> tag and its required end tag, you may put only regular text, line breaks, images, and headings. The browser renders all of these elements normally, but with the addition of some special effects to indicate that it is a hyperlink to another document. For instance, the popular graphical browsers typically underline and color the text and draw a colored border around images that are enclosed by <a> tags.

While the allowed content may seem restricted (the inability to place style markup within an <a> tag is a bit onerous, for instance), most browsers let you put just about anything within an <a> tag that makes sense. To be compliant with the HTML standard, place the <a> tag inside other markup tags, not the opposite. For example, while most browsers make sense of either variation on this anchor theme:

To subscribe to 
<cite><a href="ko.html">Kumquat Online</a></cite>, 
To subscribe to 
<a href="ko.html"><cite>Kumquat Online</cite></a>,

only the first example is technically correct.

The href attribute

Use the href attribute to specify the URL of the target of the link. Its value is any valid document URL, absolute or relative, including a fragment identifier or a JavaScript code fragment. If the user selects the contents of the <a> tag, the browser will retrieve and display the document indicated by the URL specified by the href attribute or execute the list of JavaScript expressions, methods, and functions. [the section called "Referencing Documents: The URL"]

A simple <a> tag that references another document might be:

The <a href="http:growing_season.html">growing
season</a> for kumquats in the Northeast.

which appears in the Netscape display as shown in Figure 7.1.

Notice that the phrase "growing season" is specially rendered by the browser, letting the user know that it is a link to another document. Users also typically have the option to specially set the text color of the link and have the color change when a link is taken; blue initially and then red after it has been selected at least once, for instance.

More complex anchors might include images:

<ul>
  <li><a href="pruning_tips.html">
      <img src="pics/new.gif">New pruning tips!</a>
  <li><a href="xhistory.html">
      <img src="pics/new2.gif">Kumquats throughout history</a>
</ul>

Mosaic, like most graphical browsers like Netscape and Internet Explorer, places a special border around images that are part of an anchor, as shown in Figure 7.2

The name attribute

Use the name attribute to place a fragment identifier within an HTML document. Once created, the fragment identifier becomes a potential target of a link.

An easy way to think of a fragment identifier is as the HTML analog of the goto statement label common in many programming languages. The name attribute within the <a> tag places a label within a document. When that label is used in a link to that document, it is the equivalent of telling the browser to goto that label.

The value of the name attribute is any character string, enclosed in quotation marks; for example:

<h2><a name="Pruning">Pruning Your Kumquat Tree</a></h2>

Notice that we set the anchor in a section header of presumably a large document. It's a practice we encourage you use for all major sections of your work for easier reference and future smart processing, such as automated extraction of topics.

The following link, when taken by the user:

<a href="growing_guide.html#Pruning">

jumps directly to the section of the document we named above.

The contents of the <a> tag are not displayed in any special way with the name attribute.

Technically, you do not have to put any document content within the <a> tag with the name attribute since it simply marks a location in the document. In practice, some browsers ignore the tag unless some document content--a word or phrase, even an image--is between the <a> and </a> tags. For this reason, it's probably a good idea to have at least one displayable element in the body of any <a> tag.

The onClick, onMouseOver, and OnMouseOut attributes

There are a number of "event handlers" built into the modern browsers. These handlers watch for certain conditions and user actions, such as a click of the mouse or when an image finishes loading into the browser window. With client-side JavaScript, you may include selected event handlers as attributes of certain HTML tags and execute one or more JavaScript commands and functions when the event occurs.

With the anchor (<a>) tag, you may associate JavaScript code with three mouse-related events: when the user clicks the mouse button (onClick), when the user moves the mouse pointer onto the tag's contents (onMouseOver), and when the user moves the mouse pointer off the hyperlink ( onMouseOut). The value of the event handler is--enclosed in quotation marks--one or a sequence of semicolon-separated JavaScript expressions, methods, and function references that the browser executes when the event occurs. [the section called "JavaScript Event Handlers"]

For example, a popular, albeit simple, use of the onMouseOver event with a hyperlink is to print an expanded description of the tag's destination in the JavaScript-aware browser's status box (Figure 7.3). Normally, the browser displays the frequently cryptic destination URL there whenever the user passes the mouse pointer over an <a> tag's contents:

<a href="http://www.ora.com/kumquats/homecooking/recipes.html#quat5"
   onMouseOver="window.status='A recipe for kumquat soup.';return true">
   <img src="pics/bowl.gif" border=0>
</a>

We argue that the contents of the tag itself should explain the link, but there are times when window space is tight and an expanded explanation is helpful, such as when the link is in a table of contents.

See Chapter 13, Executable Content, for more about JavaScript.

The rel and rev attributes

The rel and rev attributes express a formal relationship and direction between source and target documents. The rel attribute specifies the relationship from the source document to the target; the rev attribute specifies the relationship from the target to the source. Both attributes can be placed in a single <a> tag, and the browser may use them to specially alter the appearance of the anchor content or to automatically construct document navigation menus. Other tools also may use these attributes to build special link collections, tables of contents, and indexes.

The value of either the rel or rev attribute is a space-separated list of relationships. The actual relationship names and their meanings are up to you: they are not formally addressed by the HTML standard. For example, a document that is part of a sequence of documents might include its relationship in a link:

<a href="part-14.html" rel=next rev=prev>

The relationship from the source to the target is that of moving to the next document; the reverse relationship is that of moving to the previous document.

These document relationships are also used in the <link> tag in the document <head>. The <link> tag establishes the relationship without actually creating a link to the target document; the <a> tag creates the link and imbues it with the relationship attributes. [the section called "The <link> Header Element"]

Commonly used document relationships appear in the list below.

next

Links to the next document in a collection

prev

Links to the previous document in a collection

head

Links to the top-level document in a collection

toc

Links to a collection's table of contents

parent

Links to the document above the source

child

Links to a document below the source

index

Links to the index for this document

glossary

Links to the glossary for this document

In general, few browsers take advantage of these attributes to modify the link appearance. However, these attributes are a great way to document links you create, and we recommend you take the time to insert them whenever possible.

The style and class attributes

Use the style and class attributes for the <a> tag to control the display style for the content enclosed by the tag, and to format the content according to a predefined class of the <a> tag. [the section called "Inline Styles: The style Attribute"] [the section called "Style Classes"]

The target attribute

The target attribute lets you specify where to display the contents of a selected hyperlink. Commonly used in conjunction with frames or multiple browser windows, the value of this attribute is the name of the frame or window in which the referenced document should be loaded. If the named frame or window exists, the document is loaded in that frame or window. If not, a new window is created, given the specified name, and the document is loaded in that new window. For more information, including a list of special target names, see 12.7.

The title attribute

The title attribute lets you specify a title for the document to which you are linking. The value of the attribute is any string, enclosed in quotation marks. The browser might use it when displaying the link, perhaps flashing the title when the mouse passes over the link. The browser might also use the title attribute when adding this link to a user's hotlist.

The title attribute is especially useful for referencing an otherwise unlabeled resource, such as an image or a non-HTML document. For example, the browser might include the following title on this otherwise wordless image display page:

<a href="pics/kumquat.gif" 
   title="A photograph of the Noble Fruit">

Ideally, the value specified should match the title of the referenced document, but it's not required.

The urn attribute

The urn attribute defines the more general universal resource name (URN) for a referenced document. The value of this attribute is a string enclosed in quotes. The actual syntax and semantics of the URN have not yet been defined, making this attribute little more than a place keeper for future versions of HTML.

Linking to Other Documents

You make a hyperlink to another document with the <a> tag and its href attribute, which defines the URL of the target document. The contents of the <a> tag are presented to the user in some distinctive manner to indicate the link is available.

When creating a link to another document, you should consider adding the title, rel, and rev attributes to the <a> tag. They help document the link you are creating and allow the browser to further embellish the display anchor contents.

Linking Within a Document

Creating a link within the same HTML document or to a specific fragment of another document is a two-step process. The first step is to make the target fragment; the second is to create the link to the fragment.

Use the <a> tag with its name attribute to identify a fragment. The value of the name attribute is used in hyperlinks that point to the fragment. Here's a sample fragment identifier:

<h3><a name="Section_7">Section 7</a></h3>

A hyperlink to the fragment is an <a> tag with the href attribute, in which the attribute's value--the target URL--ends with the fragment's name, preceded by the pound sign (#). A reference to the previous example's fragment identifier, then, might look like:

See <a href="index.html#Section_7">Section 7</a>
for further details.

By far the most common use of fragment identifiers is in creating a table of contents for a lengthy document. Begin by dividing your document into several logical sections, using appropriate headers and consistent formatting. At the start of each section, add a fragment identifier for that section, typically as part of the section title as a header. Finally, make a list of links to those fragment identifiers at the beginning of your document.

Our sample document extolling the life and wonders of the mighty kumquat, for example, is quite long and involved, including many sections and subsections of interest. It is a document to be read and read again. To make it easy for kumquat lovers everywhere to quickly find their section of interest, we've included fragment identifiers for each major section, and placed an ordered list of links--a hotlinked table of contents, as it were--at the beginning of each of the Kumquat Lover's documents, a sample of which appears below along with sample fragment identifiers that appear in the same document. The ellipsis symbol (...) means there are intervening segments of content, of course.

...
<h3>Table of Contents</h3>
<ol>
  <li><a href="#soil_prep">Soil Preparation</a>
  <li><a href="#dig_hole">Digging the Hole</a>
  <li><a href="#planting">Planting the Tree</a>
</ol>
...
<h3><a name=soil_prep>Soil Preparation</a></h3>
...
<h3><a name=dig_hole>Digging the Hole</a></h3>
...
<h3><a name=planting>Planting the Tree</a></h3>
...

The kumquat lover can thereby click the desired link in the table of contents and jump directly to the section of interest, without lots of tedious scrolling.

Notice also that this example uses relative URLs--a good idea if you ever intend to move or rename the document without breaking all the hyperlinks.


Previous Home Next
Referencing Documents: The URL Book Index Creating Effective Links

HTML: The Definitive Guide CGI Programming JavaScript: The Definitive Guide Programming Perl WebMaster in a Nutshell