Skip to main content
Engineering LibreTexts

2.5: Navigation

  • Page ID
  • [ "article:topic" ]

    A feature found on almost every website is a navigation system for moving between pages. These are typically menus, where groups of common pages are created to give the site a hierarchical organization. While the approach to visual styling and interaction with menus comes in great variety, most follow a basic principle of using unordered lists of links, and the application of CSS to those lists in order to turn them into the colorful, interactive elements we are accustomed to. While there are drawbacks that we will discuss in Visually Impaired Considerations, alternative approaches can still utilize linked lists to some extent.

    Since we created our menu earlier, we already know the contents and structure of our navigation. Our group label, or top-level labels, and the nested <ul>s represent the contents of the list for that menu item.

    Some popular approaches to providing a means of navigation are menu bars with drop downs, bread crumbs, and event-driven responses. Menu bars are the most frequently utilized element, where hovering or clicking over an item in the menu brings up additional choices related to the main item. Typically referred to as drop-down menus, they can be styled to move in any direction. Nesting lists within lists can give us a multi-tier menu that allows us the ability to select from a large number of pages with little effort.
    Breadcrumbs are typically depicted as a horizontal delimited list of pages, similar to:

    Home >> Sports >> Football >> Buffalo Bills >> Patriots >> Golf

     The breadcrumb does not follow a hierarchical notation but acts more like a brief history of where you have been on the site, allowing you to skip back several steps at once without using your browser’s back button. These can be helpful in sites with large amounts of content where the user’s experience may not be particularly linear, as they move between topics or sections, like news or reference sites.

    Event-driven navigation is useful in narrowing the user experience to a fixed set of paths. This method will only make certain links available under certain conditions, restricting the options a user has on a particular page to what they are allowed to do, which may be based on a variety of rules such as if they are logged in, previous links or decisions they have made, or if something in the system needs their attention.

    These approaches can be used by themselves, or in combination to provide your user experience.


    Links in HTML can take two forms, both of which are created with the anchor tag (<a>). They can either point to a resource in another location, or to a location within the document. The former is used far more frequently than the latter, however, internal links are coming back into popularity with the rise of infinite scrolling.

    Absolute, Base, and Relative Path

    The href attribute of an anchor tag defines the actual location the link will represent. Absolute and relative paths are two reference methods for connecting sites and pages. While both methods can be used when creating links that point to content in our own site, only absolute can be used when pointing to content that is outside of your domain.

    Absolute paths are the entire length of the link required to identify one resource, whether it is a page, image, script, or media file. The URL tells us we want to go to the index page in the news folder of the website. If this was our site, and we wanted to go to the index.htm file in the sports folder, we could write it as (absolute) or ../sports/index.htm (relative). The initial .. instructs the browser that our intention is to go back one layer of depth (i.e. “up” one level in folders) and then into the sports folder, which in this example sits in the same parent folder as our news page.

    Using just an initial / without .. tells the server that we want to start at the root folder of the server and navigate from there, meaning we start with the base path.
    A base path is everything needed to get us to the index page of the root folder of the site. This is typically, and is the part you find missing in the relative path above. The combination of the base path, and relative path equals your absolute path.


    While the anchor tag supports several attributes, one of the most important of these is “target.” This attribute describes where links will be loaded, like a new tab or the same tab/browser window we are already using. The attribute can take any of the following values to define that location.

    Value Description
    _blank Opens the linked document in a new window or tab
    _self Opens the linked document in the same frame as it was clicked (this is default)
    _parent Opens the linked document in the parent frame
    _top Opens the linked document in the full body of the window
    framename Opens the linked document in a named frame

    Table 2 Anchor Targets

    Within the Page

    We can add links to a page that move the user around the page itself, which is useful on pages with long content. To do this, we use an anchor tag to define where we want our destination to be. When we create our link, we simply reference the name of our anchor, preceded by a pound sign in place of a traditional URL.

    Some text here.
    <a href="#ourDestination">Click here to go further down.</a>
    Some more text.
    Even more text!
    <a name="ourDestination">
    This is where we want to "jump" to.
    Click to show demonstration
    Some text here.
    Some more text. Even more text!