Web Development Guides

As teachers, we have ethical and legal responsibilities to provide all students with equal access to course materials and resources. The CWRL is committed not only to making its website accessible to people with disabilities, but to making it more accessible for all users. John Slatin, a former director of the Lab and co-author of Maximum Accessibility: Making your Web Site More Usable for Everyone, argues that "accessible design is good design." We offer this site and the web accessibility guidelines below as proof of this concept.

As of January 1, 2003, university policy mandates that all new course web sites, including those created for classes offered by instructors in the CWRL, DRW, and English department, must meet the accessibility standards for public information set forth in Section 508 of the U.S. Government's Rehabilitation Act. The CWRL's response has been two fold: to redesign its own website to meet these Section 508 requirements as well as priorities 1, 2, and 3 of the more exacting W3C Web Content Accessibility Guidelines (WCAG), and to draft and publish a set of web accessibility guidelines adapted from university and federal requirements.

Operating System Resources

The accessibility options for the Windows XP operating system can be found by selecting Start Menu->Programs->Accessories->Accessibility.

The Mac OSX operating system, meanwhile, has a Universal Access control panel under Finder->Apple menu->System Preferences->Universal Access.

Applications

Accessibility software applications for the PC platform are generally better than products designed for the Macintosh.

Accessibility at the CWRL

At the CWRL, we take web accessibility seriously: all pages hosted on our domain have to follow UT's accessibility guidelines. At the same time, we are committed to providing plenty of support to staffers and instructors who want to build websites but who are not sure about how to make them accessible.

ITS periodically scans the entire CWRL domain (cwrl.utexas.edu) with WebXM to find accessibility issues. We strongly suggest that you use an accessibility checker to check your pages as soon as you create them.

Some accessibility checkers are:

- Watchfire WebXAct
- AChecker
- Cynthia Says

Below, we discuss some of the components of the CWRL's accessibility efforts and policy.

Web Accessibility Guidelines

The following advice can be used to create fully accessible web pages. You can check your completed pages with WebXAct, AChecker, Cynthia Says, or WAVE. Type your URL into the box and make sure that "Section 508" is selected.

Guidelines

  1. Web Accessibility Link: Each university Web site must contain an "Accessibility" link to http://www.utexas.edu/web/guidelines/accessibility.html. This page includes the University's Web Accessibility Guidelines and contact information for the University's Accessibility Coordinator.
  2. A text equivalent for every non-text element (audio tracks, images, etc.) should be provided.
    • Every image, Java applet, Flash file, video file, audio file, plug-in, etc. should have an alt description.
    • Complex graphics (graphs, charts, etc.) should be accompanied by detailed text descriptions.
    • Alt descriptions for images used as links should note the link destination.
    • Decorative graphics with no other function should have empty alt descriptions (alt= ""), but should not be missing alt descriptions.
  3. When multimedia presentations (such as video with audio) are available on a web page, the audio portion must be captioned and the captions must be synchronized with the presentation.
  4. Web pages should be designed so that all information conveyed with color is also available without color, either from context or tags. Contrast between foreground and background should be distinct.
  5. Documents should be organized so they are readable without a style sheet.
    • Style sheets may be used for color, indentation and other presentation effects, but the document should be still understandable (even if less visually appealing) when the style sheet is turned off.
  6. Client-side image maps shall be provided instead of server-side image maps except where the regions cannot be defined with an available geometric shape.
    • Standard HTML client-side image maps should be used, and appropriate alt tags provided for images as well as hot spots.
  7. Redundant text links should be provided for each active region of a server-side image map.
    • Separate text links should be provided outside of the server-side image map to access the same content that the image map hot spots access.
  8. Row and column headers should be identified for data tables.
    • Tables used strictly for layout purposes should not have header rows or columns.
    • Data tables should have column and row headers appropriately identified (using the <th> tag)
  9. Markup (html tags) should be used to associate data cells and header cells for data tables that have two or more logical levels of row or column headers.
    • Table cells should be associated with the appropriate headers (i.e. with the id, headers, scope and/or axis HTML attributes).
  10. Frames titles should indicate frame content and navigation.
    • Each frame should have a title that helps the user understand the frame's purpose.
  11. Pages should be designed to avoid causing the screen to flicker with a frequency greater than 2 Hz and lower than 55 Hz, reducing the risk of optically-induced seizures.
    • Flashing or flickering elements are usually added through technologies such as animated gif's, Java applets, or third-party plug-ins or applications.
  12. When pages use scripting languages to display content, or to create interface elements, the information provided by the script should be identified with functional text that can be read by assistive technology.
    • All scripts (e.g. Javascript pop-up menus) should be either directly accessible to assistive technologies (keyboard accessibility is a good measure of this), or an alternative method of accessing equivalent functionality should be provided (e.g. a standard HTML link).
  13. When a web page requires that an applet, plug-in or other application be present on the client system to interpret page content, the page should provide a link to an appropriately accessible applet, plugin, or other application.
  14. When electronic forms are designed to be completed on-line, the form should allow people using assistive technology to access the information, field elements, and functionality required for completion and submission of the form, including all directions and cues.
    • All form controls must have text labels adjacent to them.
    • Form elements should have labels associated with them in the markup.
    • Dynamic HTML scripting of the form should not interfere with assistive technologies.
  15. A method should be provided that permits users to skip repetitive navigation links.
  16. When a timed response is required, the user should be alerted and given sufficient time to indicate to the system that more time is required. Web pages can be designed with scripts so that the web page disappears or "expires" if a response is not received within a specified amount of time. For this reason, when a timed response is required, the user will be alerted via a prompt and given sufficient time to indicate whether additional time is needed.
  17. A text-only page, with equivalent information or functionality, should be provided to make a web site comply with the provisions of these standards, when compliance cannot be accomplished in any other way. The content of the text-only page will be updated whenever the primary page changes.

Audio captioning

When multimedia presentations (such as video with audio) are available on a web page, the audio portion must be captioned and the captions must be synchronized with the presentation.

Audio Information

Core Techniques (W3C Source)

Auditory presentations must be accompanied by text transcripts of auditory events. When these transcripts are presented synchronously with a video presentation they are called "captions" and are used by people who cannot hear the audio track of the video material.

Some media formats (e.g., QuickTime and SMIL) allow captions and video descriptions (audio description of visual content) to be added to a multimedia clip. Microsoft's SAMI allows captions to be added. The following example demonstrates that captions should include speech as well as any other sounds in the environment that help viewers understand what is going on.

Example: Captions for a scene from "E.T." The phone rings three times, then is answered.
[phone rings]
[ring]
[ring]
"Hello?"
End example.

Until the format you are using supports alternative tracks, two versions of a movie could be made available, one with captions and video descriptions, and one without. Some technologies, such as SMIL and SAMI, allow audio/visual files to be combined with separate text files via a synchronization file to create captioned audio and movies.

Some technologies also allow users to choose from multiple sets of captions to match their reading skills. For more information see the SMIL specification.

Equivalents for sounds can be provided in the form of a text phrase on the page that links to a text transcript or description of the sound file. The link to the transcript should appear in a highly visible location such as at the top of the page. However, if a script is automatically loading a sound, it should also be able to automatically load a visual indication that the sound is currently being played and provide a description or transcript of the sound.

Note: Some controversy surrounds this last technique because ideally the browser should simply load the visual form of the information instead of the auditory form if the user preferences are set to do so. However, strategies must also work with today's browsers.

For more information, please refer to NCAM.

Text Equivalents for Multimedia

HTML Techniques (W3C source)

If necessary, a text equivalent should be provided for visual information necessary for an understanding of a webpage. For example, consider a repeating animation that shows cloud cover and precipitation as part of a weather status report. Since the animation is supplementing the rest of the weather report (which is presented in text), a less verbose description of the animation is necessary. However, if the animation appears in a pedagogical setting where students are learning about cloud formations in relation to land mass, then the animation ought to be described for those who cannot view the animation but want to learn the lesson.

Note: Following is a related concern, not included on the section 508 guidelines:

WAI Guideline 1.3 Until user agents can automatically read aloud the text equivalent of a visual track, provide an auditory description of the important information of the visual track of a multimedia presentation. [Priority 1]

For core techniques, see Visual information and motion .

Creating ALT text

A text equivalent for every non-text element (audio tracks, images, etc.) should be provided.

  • Every image, Java applet, Flash file, video file, audio file, plug-in, etc. should have an alt description.
  • Complex graphics (graphs, charts, etc.) should be accompanied by detailed text descriptions.
  • Alt descriptions for images used as links should note the link destination.
  • Decorative graphics with no other function should have empty alt descriptions (alt= ""), but should not be missing alt descriptions.

When creating "alternative text" aim for a functional label based on the context in which the component being described (most often an image) is used rather than a visual description. Imagine reading the document aloud over the telephone. What would you say upon encountering this image to make the page comprehensible to the listener?

Most authoring tools provide a space for you to enter this information, or you can add alternative text with the "alt" attribute of the IMG element. For example, use a tag like the following:

<img src="jjoyce.jpg" alt="James Joyce as a young man">

To do this in HTML (and in the code view of Dreamweaver), set your cursor down after the source name of your image (for example "joyce1.gif”), type alt=””. Within the quotation marks, type the text as you would like it to be spoken by the user's screenreader application.

When using Dreamweaver, you can also designate alternative text in the Image Properties Panel (usually at the bottom of the screen)—simply type the text into the alt field. See below:

James Joyce as a young man

Image Properties Panel

Dreamweaver also features accessibility dialog boxes. Just click Edit>Preferences>Accessibility and check the "Images" checkbox. Then, whenever you insert an image, the following dialog box will pop up:

Image Tag Accessibility Attributes

You can add your alternative text here instead of in the properties panel. Additionally, you can choose to use the "longdesc," or long description, attribute (see the second text box in the dialog box above). Because screenreaders typically read only 150 characters or less of alternate text (the example above is 26 characters, including spaces), you may need to describe an image in more detail in another file (e.g., jjoyce.html):

<HTML>
<HEAD>
<TITLE>James Joyce as a Young Man (Long Description)</TITLE>
</HEAD>
<BODY>
A black and white photo of a young James Joyce standing outside, and in front of, an open windowpane.
He wears a vest over his shirt and tie as well as a crumpled sport-jacket. His hands are in the pockets of his 
wool trousers and his head, which tilts to his right, is topped with a sailor's cap. His face is expressionless.
</BODY>
</HTML>

The tag in the calling document (the one with the IMG element) would now look like the following:

<IMG src="jjoyce.jpg" alt="James Joyce as 
a young man" width="234" height="373" longdesc="jjoyce.html">

Presumably, a user can now click on the image and go to the "jjoyce.html" file. Unfortunately, most browsers (including Internet Explorer) do not support this attribute. So it is better to make a caption for each of your images and use this caption as a link to the long description file (when necessary).

Even sighted users may benefit from having access to a long description. It is debatable as to whether this particular long description is necessary, accurate, or at all interesting. However, if you use an image of a chart in your document, a long description may be the best way for you to insure equitable access to information for visually impaired users.

To specify an "alt" attribute with Microsoft FrontPage, right-click on the picture, choose Picture Properties, and then find the text box for Alternative Representation in the Picture Properties dialog box.

For client-side image maps, either use the "alt" attribute with the AREA element, or link-text with A elements (see Image Map Guidelines). For the former method, Dreamweaver provides a Hotspot Properties Panel that includes a text box for entering alt text. This panel will appear when you use any of the hotspot tools from the Image Properties Panel:

Hotspot Properties Panel

The <APPLET> tag for Java applets also accepts an "alt" attribute, but it only works for browsers that provide support for Java. Often, users with slower internet connections will turn support for Java applets off. A better alternative for providing textual descriptions is to simply include the alternative text between the opening and closing <APPLET> or <OBJECT> tags. For instance, if a web designer wanted to include an applet called MyCoolApplet in a web page, and also include a description reporting that the applet shows a stock ticker displaying the current price of various stocks, the designer would use the following HTML coding:

<APPLET code="MyCoolApplet.class" width="200", 	
height="100">This applet displays current stock prices 
for many popular stocks.</APPLET>

Finally, yet another way of providing a textual description is to include it in the surrounding context:

<p>..it seems strange to be back. 
Below is a picture of me during my great vacation!</p>
<IMG src="pictureofme.jpg">

Alt descriptions for images used as links should note the link destination.

Link text should be identical or closely related to the title of the destination page or object. When an image is used as a link, however, the image is often used in the place of the link text, so the alt attribute of the IMG element should be used to indicate the destination, whether or not the image itself is also described. For example:

<a href="jjoyce.html"><img src="jjoyce.jpg" 
alt="James Joyce as a young man, link to long description" 
width="234" height="373" longdesc="jjoyce.html"></A>

Decorative graphics with no other function should have empty alt descriptions (alt= ""), but should not be missing alt descriptions.

If descriptive text is already provided above or below the image, an empty description, alt="", may be used in the IMG tag. In other situations where alternative text is unnecessary or distracting, such as images used as spacers, bullets in lists, and links that also contain text, alt="" should still be included so that non-graphical browsers know to ignore the image. Do not use this technique if the image is a link or is important for understanding the page.

For more information, see the World Wide Web Consortium's Core Techniques for Text Equivalents.

Using color

Web pages should be designed so that all information conveyed with color is also available without color, either from context or tags. Contrast between foreground and background should be distinct.

To make your sites accessible to the visually impaired, make sure that information is not conveyed through color alone. For example, do not ask users to "Please select an item from those listed in green." Instead, ensure that information is available through other style effects (e.g., a font effect), context (e.g., comprehensive text links), or an alternative indicator, such as an asterisk (*) or other symbol.

Color deficiencies associated with partial sight and congenital deficiencies make it difficult to discriminate between colors of similar hue. Ensure that foreground and background color combinations provide sufficient contrast when viewed by someone with color deficits or when viewed on a black and white screen--will text and background still be distinguishable? Will your user still be able to navigate your links, images, etc.?

Don't assume that the lightness you perceive will be the same as the lightness perceived by people with color deficits. You can generally assume that they will see less contrast between colors than you will. If you lighten your light colors and darken your dark colors, you will increase the visual accessibility of your design.

To test whether your document still works without colors, examine it with a monochrome monitor or with browser colors turned off. Also, try setting up a color scheme in your browser that only uses black, white, and the four browser-safe shades of gray and see how your page holds up. You can also use WAVE to perform more sophisticated tests.

To test whether color contrast is sufficient to be read by people with color deficiencies or by those with low resolution monitors, print pages on a black and white printer (with backgrounds and colors appearing in grayscale). Also try taking the printout and copying it for two or three generations to see how it degrades. This will show you where you need to add redundant cues (example: hyperlinks are usually underlined on Web pages), or whether the cues are too small or indistinct to hold up well.

For more information you can go to Lighthouse International's tutorial for Effective Color Contrast.

Using stylesheets

Documents should be organized so they are readable without a style sheet.

Organize documents so they may be read without style sheets. When content is organized logically, it will be rendered in a meaningful order even when style sheets are turned off or not supported.

Style sheets may be used for color, indentation and other presentation effects, but the document should still be understandable (even if less visually appealing) when the style sheet is turned off.

If you use a style sheet, ensure that the important content appears in the documents that use the style sheet. Text generated by style sheets is not part of the document source and will not be available to assistive technologies that access content through the Document Object Model Level 1 (DOM1). Provide a text equivalent for any important image or text generated by style sheets (e.g., via the 'background-image', 'list-style', or 'content' properties).

If designers set up their pages to override user-defined style sheets, people with disabilities may not be able to use those pages. Therefore, designers must ensure that their web pages do not interfere with user-defined style sheets.

In general, the "safest" and most useful form of style sheets are "external" style sheets, in which the style rules are set up in a separate file. Example of source code:

You may also want to create an alternate external style sheet for your page that allows the user to view the page in larger text. This style sheet will be used as an alternate to the default style sheet, and can be coded in the following way:

For information on creating alternate styles sheets, please see the following articles by Paul Sowden. This article informed the style sheets on the CWRL site.

For information on CSS2 techniques for generating content from style sheets, you can go to the World Wide Web Consortium's Guidelines for Generated Content.

For information on using CSS properties to specify border styles, see the World Wide Web Consortium's Guidelines for Rules and Borders.

Using image maps

Image Map Guidelines (from W3C HTML Techniques)

An image map is an image that has "active regions." When the user selects one of the regions, some action takes place -- a link may be followed, information may be sent to a server, etc. To make an image map accessible, content developers must ensure that each action associated with a visual region may be activated without a pointing device (such as a mouse).

Image maps are created with the MAP element. HTML allows two types of image maps: client-side (the user's browser processes a URI) and server-side (the server processes click coordinates). For all image maps, content developers must supply a text equivalent.

Ths page contains guidelines for:

* using serve-side image maps
* writing redundant text in image maps

Client-side image maps shall be provided instead of server-side image maps except where the regions cannot be defined with an available geometric shape.

Content developers should create client-side image maps (with the "usemap" attribute ) rather than server-side image maps (with the "ismap" attribute) because server-side image maps require a specific input device. If server-side image maps must be used (e.g., because the geometry of a region cannot be represented with values of the shape attribute), authors must provide the same functionality or information in an alternative accessible format. One way to achieve this is to provide a textual link for each active region so that each link is navigable with the keyboard. If you must use a server-side image map, please consult the section on server-side image maps.

Standard HTML client-side image maps are used, and appropriate alt tags are provided for the image as well as the hot spots.

Provide text equivalents for image maps since they convey visual information. As with other links, the link text should make sense when read out of context. Refer to the section on Link Text for information on writing good link text. Users may also want keyboard shortcuts to access frequently followed links. Refer to the section on Keyboard access to links.

If AREA is used to create the map, use the "alt" attribute:

<img src="welcome.gif"alt="Image map of areas in the library" usemap="#map1">
<MAP name="map1">
<AREA shape="rect" coords="0,0,30,30" href="reference.html" alt="Reference">
<AREA shape="rect" coords="34,34,100,100" href="media.html" alt="Audio visual lab">
</MAP>

The following example illustrates the same idea, but uses OBJECT instead of IMG to insert the image to provide more information about the image:

<OBJECT data="welcome.gif" type="image/gif" usemap="#map1">
There are several areas in the library including the 
<a href="reference.html">Reference</A> section and the
<a href="media.html">Audio Visual Lab</A>
</OBJECT>
<MAP name="map1">
<AREA shape="rect" coords="0,0,30,30" 
href="reference.html" alt="Reference">
<AREA shape="rect" coords="34,34,100,100"
href="media.html" alt="Audio visual lab">
</MAP>

In addition to providing a text equivalent, provide redundant textual links. If the A element is used instead of AREA, the content developer may describe the active regions and provide redundant links at the same time:

<OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
<MAP name="map1">
<P>Navigate the site.
[<A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</A>]
[<A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A>]
[<A href="search.html" shape="circle" coords="184.200,60">Search</A>]
[<A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A>]
</MAP>
</OBJECT>

Note that in the previous example, the MAP element is the content of the OBJECT element so that the alternative links will only be displayed if the image map (navbar1.gif) is not.

Note also that links have been separated by brackets ([]). This is to prevent older screen readers from reading several adjacent links as a single link as well as to help sighted users distinguish between links visually.

Content developers should make sure they include printable characters (such as brackets or a vertical bar (|)) surrounded by spaces between adjacent text links. The problem does not occur if images have been used as links; The alt-text will not be read as a single link because of the place-holding images that graphical browsers use when images are not loaded. Refer to the section Grouping and bypassing links for more information.

Redundant text links shall be provided for each active region of a server-side image map.

Separate text links are provided outside of the server-side image map to access the same content that the image map hot spots access.

When a server-side image map must be used, content developers should provide an alternative list of image map choices. There are three techniques:

Include the alternative links within the body of an OBJECT element (refer to the previous example illustrating links in the OBJECT element).

If IMG is used to insert the image, provide an alternative list of links after it and indicate the existence and location of the alternative list (e.g., via that "alt" attribute).

<A href="http://www.example.com/cgi-bin/imagemap/my-map">
<IMG src="welcome.gif" alt="Welcome! (Text links follow)" ismap>
</A>
<P>
[<A href="reference.html">Reference</A>]
[<A href="media.html">Audio Visual Lab</A>]

If other approaches don't make the image map accessible, create an alternative page that is accessible.

Creating accessible tables

Row and column headers

Row and column headers should be identified for data tables.

Tables used strictly for layout purposes should not have header rows or columns. Data tables should have column and row headers appropriately identified (using the <TH> tag)

Tables allow us to arrange data -- text, images, links, other tables, etc. -- into rows and columns of cells. Tables should not be used purely as a means to layout document content as this may present problems when rendering to non-visual media. Additionally, when used with graphics, these tables may force users to scroll horizontally to view a table designed on a system with a larger display. To minimize these problems, authors should use style sheets, not tables, to control layout.

Table cells may either contain "header" information (use the TH element) or "data" (see the TD element). Cells may span multiple rows and columns. Individual cells can be labeled to communicate heading information about the cell (see markup for cells in data tables below). This information greatly assists users with visual disabilities, and allows multi-modal wireless /preowsers with limited display capabilities (e.g., Web-enabled pagers and phones) to handle tables.

Each table may have an associated caption that provides a short description of the table's purpose: e.g., <CAPTION>text</CAPTION>. For a longer description, use the summary attribute of the Table Element: e.g.,<TABLE summary="text">

When using Dreamweaver, you can select Edit>Preferences>Accessibility and then choose the tables checkbox. When you create a table, the following dialog box will appear:

Accessibility Options for Tables dialog box

This dialog box includes caption and summary text input fields. It also allows you to automatically create header tags for all your rows and/or columns. The align attribute of the caption element, meanwhile, like all style related attributes, can be more efficiently set in a style sheet.

For more information, see the World Wide Web Consortium's table page, from which this explanation has been adapted. For a /preief example, see the table below:

<TABLE border="1" summary="This table charts the number of
cups of coffee consumed by each senator, the type of coffee
(decaf or regular), and whether taken with sugar.">
    <caption>Cups of coffee consumed by each senator</caption>
    <tr> 
        <th>Name</th>
        <th>Cups</th>
        <th>Type of Coffee</th>
        <th>Sugar?</th>
    </tr>
    <tr> 
        <th>T. Sexton</th>
        <td>10</td>
        <td>Espresso</td>
        <td>No</td>
    </tr>
    <tr>
        <th>J. Dinnen</th>
        <td>5</td>
        <td>Decaf</td>
        <td>Yes</td>
    </tr>
</table>
Cups of coffee consumed by each senator
Name Cups Type of Coffee Sugar?
T. Sexton 10 Espresso No
J. Dinnen 5 Decaf Yes

Markup for cells in data tables

Markup (html tags) should be used to associate data cells and header cells for data tables that have two or more logical levels of row or column headers

Table cells should be associated with the appropriate headers (i.e. with the id, headers, scope and/or axis HTML attributes

  • Headers (THEAD, TFOOT, and TBODY)
  • Scope
  • Axis

Headers
Use headers to identify relationships among table cells. Headers allow screen readers to interpret the information in tables. If there is more than one row or column of headers, a more extensive description of the relationship between cells helps the user understand the table's structure better.

Table rows may be grouped into head, foot, and body sections, with the THEAD, TFOOT and TBODY elements, respectively. These row groups convey additional structural information and may be rendered in ways that emphasize this structure. The head/body/foot division can help users scroll sections independently of the head and foot. When long tables are printed, the head and foot information may be repeated on each page that contains table data.

The table head and table foot should contain information about the table's columns. The table body should contain rows of table data. The following example illustrates the order and structure of table heads, feet, and bodies.

<TABLE>
  		<THEAD>
  		<TR> ...header information...
  		</THEAD>

  		<TFOOT>
  		<TR> ...footer information...
  		</TFOOT>
  		<TBODY>
  		<TR> ...first row of block one data...

  		<TR> ...second row of block one data...
  		</TBODY>
  		<TBODY>
  		<TR> ...first row of block two data...
  		<TR> ...second row of block two data...

  		<TR> ...third row of block two data...
  		</TBODY>
  		</TABLE> 

TFOOT must appear before TBODY within a TABLE definition.

Column groups can also provide additional structural information. Use the COLGROUP and COL elements to declare column properties at the start of a table definition. Users can then read the table incrementally rather than having to wait for all the table data to arrive.

Scope
The following example associates header and data information with the "scope" attribute rather than headers. Scope must have one of the following values: "row", "col", "rowgroup", or "colgroup." Scope specifies the set of data cells to be associated with the current header cell. This method is particularly useful for simple tables like the following:

Cups of coffee consumed by each senator

Name Cups Type of Coffee Sugar?
T. Sexton 10 Espresso No
J. Dinnen 5 Decaf Yes

Here is the HTML for the above table. Note the <TH> tags defining each column.

<TABLE border="border" summary="This table charts the number
  		of cups of coffee consumed by each senator, the type of coffee 
  		(decaf or regular), and whether taken with sugar.">
  		<CAPTION>Cups of coffee consumed by each senator</CAPTION>
  		<TR>
  		<TH scope="col">Name</TH>
  		<TH scope="col">Cups</TH>
  		<TH scope="col" ab/pre="Type">Type
  		of Coffee</TH>
  		<TH scope="col">Sugar?</TH>
  		</TR>
  		<TR>
		<TH scope="row">T. Sexton</TH>
  		<TD>10</TD>
  		<TD>Espresso</TD>
  		<TD>No</TD>
  		</TR>
  		<TR>
		<TH scope="row">J. Dinnen</TH>
  		<TD>5</TD>
  		<TD>Decaf</TD>
  		<TD>Yes</TD>
  		</TR>
  		</TABLE>

The axis tag can be used to create categories in more complex tables. Use it to group similar elements.

Travel Expense Report

Meals Hotels Transport subtotals
San Jose
25-Aug-97 37.74 112.00 45.00
26-Aug-97 27.28 112.00 45.00
subtotals 65.02 224.00 90.00 379.02
Seattle
27-Aug-97 96.25 109.00 36.00
28-Aug-97 35.00 109.00 36.00
subtotals 131.25 218.00 72.00 421.25
Totals 196.27 442.00 162.00 800.27

A speech synthesizer might render the example above by speaking the following:

San Jose
  		25-Aug-97: Meals: 37.74, Hotels: 112.00, Transport: 45.00
  		26-Aug-97: Meals: 27.28, Hotels: 112.00, Transport: 45.00
  		subtotals: Meals: 65.02, Hotels: 224.00, Transport: 90.00, subtotals: 379.02
  		etc.

Alternatively, the user may be interested only in a particular column, and with the appropriate markup can instruct the speech synthesizer to read it as follows:

Meals
  		San Jose
  		25-Aug-97: 37.74
  		26-Aug-97: 27.28
  		subtotals: 65.02

  		Seattle
  		27-Aug-97: 96.25
  		28-Aug-97: 35.00
  		subtotals: 131.25
  		Totals: 196.24

The HTML source for this example follows. Notice how "axis", "headers", and "id" attributes are used in some of the TH and/or TD tags. The axis attribute creates categories of headers uniquely identified by the id attribute, and the headers attribute refers to all of the headers associated with a particular cell.

<TABLE border="border" summary="this complex table example summarizes travel
		  expenses incurred during August trips to San Jose and Seattle">
		  <CAPTION> Travel Expense Report </CAPTION>

		  <TR>
		  <TH></TH>
		  <TH id="e1" axis="expenses">Meals</TH>
		  <TH id="e2" axis="expenses">Hotels</TH>

		  <TH id="e3" axis="expenses">Transport</TH>
		  <TH id="s1" axis="subtotals">subtotals</TH>

		  </TR>
		  <TR>
		  <TH id="l1" axis="location">San Jose</TH>
		  </TR>

		  <TR>
		  <TD id="d1" axis="date">25-Aug-97</TD>
		  <TD headers="l1 d1 e1">37.74</TD>

		  <TD headers="l1 d1 e2">112.00</TD>
		  <TD headers="l1 d1 e3">45.00</TD>
		  <TD></TD>
		  </TR>

		  <TR>
		  <TD headers="l1" id="d2" axis="date">26-Aug-97</TD>
		  <TD headers="l1 d2 e1">27.28</TD>

		  <TD headers="l1 d2 e2">112.00</TD>
		  <TD headers="l1 d2 e3">45.00</TD>
		  <TD></TD>
		  </TR>

		  <TR>
		  <TH headers="l1"id="s2"axis="subtotals">subtotals</TH>
		  <TD headers="l1 s2 e1">65.02</TD>

		  <TD headers="l1 s2 e2">224.00</TD>
		  <TD headers="l1 s2 e3">90.00</TD>
		  <TD headers="l1 s2 s1">379.02</TD>

		  </TR>
		  <TR>
		  <TH id="l2" axis="location">Seattle</TH>
		  </TR>

		  <TR>
		  <TD headers="l2"id="d3" axis="date">27-Aug-97</TD>
		  <TD headers="l2 d3 e1">96.25</TD>

		  <TD headers="l2 d3 e2">109.00</TD>
		  <TD headers="l2 d3 e3">36.00</TD>
		  <TD></TD>
		  </TR>

		  <TR>
		  <TD headers="l2"id="d4" axis="date">28-Aug-97</TD>
		  <TD headers="l2 d4 e1">35.00</TD>

		  <TD headers="l2 d4 e2">109.00</TD>
		  <TD headers="l2 d4 e3">36.00</TD>
		  <TD></TD>
		  </TR>

		  <TR>
		  <TD headers="l2"id="s3" axis="subtotals">subtotals</TD>
		  <TD headers="l2 s3 e1">131.25</TD>

		  <TD headers="l2 s3 e2">218.00 
		  </TD>
		  <TD headers="l2 s3 e3">72.00</TD>
		  <TD headers="l2 s3 s1">421.25</TD>

		  </TR>
		  <TR>
		  <TH id="t1" axis="totals">Totals</TH>
		  <TD headers="t1 e1">196.27</TD>

		  <TD headers="t1 e2">442.00</TD>
		  <TD headers="t1 e3">162.00</TD>
		  <TD headers="t1 s1">800.27</TD>

		  </TR>
		  </TABLE> 

For more information, see the World Wide Web Consortium's table page, from which this explanation has been adapted.

Using frames

Frames titles should indicate frame content and navigation.

Each frame should have a title that helps the user understand the frame's purpose.

A frameset combines at least two other separate Web pages in the same window of a browser. Although recent screen readers can interpret frames, frames can still be disorienting to the user. Over the last several years, the use of frames has become less common, since the effect can often be simulated by the reduplication of banners and navigation structures on each page. If you do choose to employ frames, use the "title" attribute of the <FRAME> element to describe each frame's purpose, as in the following example:

<FRAMESET cols="15%, 85%">

<FRAME src="menu.html" title="Navigation menu"name="menu">

<FRAME src="content1.html" title="Main content" name="content">

The "name" attribute of the <FRAME> element can be used for targeting and should not be regarded as a functional replacement for the title attribute. The <FRAME> element also implements the "longdesc" attribute (see Creating Alternative Text), which should be used to supplement the short description provided by the title attribute.

Alternative <NOFRAMES> content should always be available if the user cannot or chooses not to view frame content. The <NOFRAMES> content should indicate what the contents of the frames are and provide links to individual frame pages if appropriate, as in this example.

<NOFRAMES>
<P>This frameset document contains:
<UL>
	<LI><a href="menu.html">Page navigation</A>
	<LI><a href="content1.html">Main content</A>
</UL>
</NOFRAMES>
</FRAMESET>

These two pieces of sample code could be joined to form a complete frameset.

If you are using Dreamweaver MX, you can activate the Frame Tag Accessibility Attributes Dialog Box by selecting Edit>Preferences>Accessibility and choosing the Frames Checkbox. Then whenever you insert a frame in the Design window, the following dialog box will appear:

Frame Tag Accessibility Attributes dialog box

The dialog box includes a text field for entering the title as well as a dropdown list of name attribute values for the current frame and all pre-existing frames. In Dreamweaver, frames automatically use a naming convention based on positioning (e.g. "leftFrame" or "mainFrame"). You can only change these frame names in the code view.

This description has been adapted from the frames page at www.webaim.org.

Flickering content

Avoid causing the screen to flicker with a frequency greater than 2 Hz and lower than 55 Hz.

Unacceptable levels of screen flicker can trigger seizures in users with photosensitive epilepsy. Many other users find it annoying. Flashing or flickering elements are usually added through technologies such as animated gif's, Java applets, or third-party plug-ins or applications.

In general, avoid animation unless you have a compelling reason to use it. Do not use scrolling text, which is inaccessible to screen readers and impossible for some people to read.

The following link demonstrates unacceptable screen flicker. Do not follow this link if you have photosensitive epilepsy:
http://ncam.wgbh.org/richmedia/media/flicker_demo.html

Using applets

When a web page requires that an applet, plug-in or other application be present on the client system to interpret page content, the page must provide a link to an appropriately accessible applet, plug-in, or other application.

The bulleted items below are guidelines for appropriately accessible applets, plug-ins, and applications.

  • When software is designed to run on a system that has a keyboard, product functions should be executable from a keyboard where the function itself or the result of performing a function can be discerned textually.
  • Applications should not disrupt or disable activated features of other products that are identified as accessibility features, where those features are developed and documented according to industry standards. Applications also should not disrupt or disable activated features of any operating system that are identified as accessibility features where the application programming interface for those accessibility features has been documented by the manufacturer of the operating system and is available to the product developer.
  • A well-defined on-screen indication of the current focus should be provided that moves among interactive interface elements as the input focus changes. The focus should be programmatically exposed so that assistive technology can track focus and focus changes.
  • Sufficient information about a user interface element including the identity, operation and state of the element should be available to assistive technology. When an image represents a program element, the information conveyed by the image must also be available in text.
  • When bitmap images are used to identify controls, status indicators, or other programmatic elements, the meaning assigned to those images should be consistent throughout an application's performance.
  • Textual information should be provided through operating system functions for displaying text. The minimum information that should be made available is text content, text input caret location, and text attributes.
  • Applications should not override user selected contrast and color selections and other individual display attributes.
  • When animation is displayed, the information should be displayable in at least one non-animated presentation mode at the option of the user.
  • Color coding should not be used as the only means of conveying information, indicating an action, prompting a response, or distinguishing a visual element.
  • When a product permits a user to adjust color and contrast settings, a variety of color selections capable of producing a range of contrast levels should be provided.
  • Software should not use flashing or blinking text, objects, or other elements having a flash or blink frequency greater than 2 Hz and lower than 55 Hz.
  • When electronic forms are used, the form should allow people using assistive technology to access the information, field elements, and functionality required for completion and submission of the form, including all directions and cues.
  • When embedded into web pages, few plug-ins are currently directly accessible. Some of them (e.g. RealPlayer) are more accessible as standalone products. It may be better to invoke the whole program rather than embed movies into pages at this point, although this may change in the future.
  • Acrobat Reader 5.0 allows screen readers to access PDF documents. However, not all users have this version installed, and not all PDF documents are text-based (some are scanned in as graphics), which renders them useless to many assistive technologies. It is recommended that an accessible HTML version be made available as an alternative to PDF.
  • PowerPoint files are currently not directly accessible unless the user has a full version of the PowerPoint program on the client computer (and not just the PowerPoint viewer). It is recommended that an accessible HTML version be provided as well.

Creating forms

When electronic forms are designed to be completed on-line, the form should allow people using assistive technology to access the information, field elements, and functionality required for completion and submission of the form, including all directions and cues.

All form controls must have text labels adjacent to them.

Form controls, or form objects, are special elements by which users interact with forms. Examples include buttons, checkboxes, menus, and text inputs.

Until user agents support explicit associations between labels and form controls for all form controls with implicitly associated labels, ensure that the label is properly positioned. The label must immediately precede its control on the same line (allowing more than one control/label per line) or be in the line preceding the control (with only one label and one control per line).

Form elements should have labels associated with them in the markup.

Whenever you use a form control / object, use the <LABEL> tag to implicitly associate a label with the control. You should also use the “id”and “for” HTML attributes to explicitly associate labels with form controls:

                <LABEL for="firstname">First Name:
		<INPUT type="text" id="firstname">
                </LABEL>

The preceding example wraps the <LABEL> tag around the <INPUT> tag, so the inclusion of the explicit association provided by the "for" and "id" attributes may not be necessary. In fact, Dreamweaver's "Input Tag Accessibility Attributes" dialog box makes you choose between these two methods. You can activate this dialog box by selecting Edit>Preferences>Accessibility and choosing the "Form Elements" checkbox. The following dialog box will then appear whenever you insert a form object:

input tag accessibility attributes dialog box

For reasons stated earlier, the radio buttons labeled "Style: No Label Tag" and "Position: After Form Item" should never or rarely be selected. The "Access Key" text field assigns a value to the "accesskey" attribute, which enables the user to directly access the form control. The "Tab Index" text field assigns a value to the "tabindex" attribute, which determines the control's position in the tab order. Since many users prefer to tab through forms rather than using a mouse, ensuring a logical tab order is important.

It is also a good idea to provide a default value for each form control using the "value" attribute:

<LABEL accesskey="n">First Name: 
<INPUT type="text"value="firstname" tabindex="1">
</LABEL>

When form controls can be grouped into logical units, use the <FIELDSET> element and label those units with the <LEGEND> element:

                  <FORM action="http://example.com/adduser" method="post">
		  <FIELDSET>
		  <LEGEND>Personal information</LEGEND>
		  <LABEL for="firstname">First name: </LABEL>
		  <INPUT type="text"
		  id="firstname" tabindex="1">
		  <LABEL for="lastname">Last name: </LABEL>
		  <INPUT type="text"id="lastname" tabindex="2">
		  ...more personal information...
		  </FIELDSET>
		  <FIELDSET>
		  <LEGEND>Medical History</LEGEND>
		  ...medical history information...
		  </FIELDSET>
		  </FORM>

Make sure that the Dynamic HTML scripting of the form does not interfere with assistive technologies.

Test out your form with Bobby, at http://bobby.watchfire.com, or with WAVE, at http://wave.webaim.org, especially if you use dynamic HTML. If the dynamic HTML interferes with assistive technology, such as screen readers, provide a form alternative that does not use the dynamic HTML. You should also provide alternative means of submitting form information, such as a phone number and/or a mail or email address.

For further information, see the World Wide Web Consortium’s Guidelines for Forms.

Shortcuts and skip to content links

Bypassing Repetitive Content

A method should be provided that permits users to skip repetitive navigation links.

Many sites include a series of navigation links at the top, or down the side of the page, sometimes repeating on every subsequent or embedded page. These navigation links can be frustratingly repetitive for users of screen-readers since screen readers read from beginning to end and users do not always have the ability to ignore content unless a means is provided to bypass it.

You can create bypass links to reduce this unnecessary reading. One of the most common strategies is to include an "invisible" (transparent or matching the background color) 1pixel x 1pixel gif immediately before the content to be skipped and to anchor this image further down the page, past the unnecessary material. Although this image/link will probably go unnoticed by users deploying pointing devices and visual user-agents, users of screen readers will take note of this image and link. Like all images, the tag for this invisible gif should include alt text with something to the effect of "bypass navigation links" or "skip to main content."

The following example provides code for skipping over repetitive navigation:

<P><A href="#skipover"><IMG src="skipover.gif"
width="1" height="1" alt="skip to main content"> 
<a href="http://wwwnt.cwrl.utexas.edu/web/accessibility/guidelines/index.html">
</A></P>
<P><A href="http://www.lib.utexas.edu">Visit the Library</A></P>
<P><A href="http://www.utexas.edu">Home</A></P>

Using Keyboard Shortcuts

When software is designed to run on a system that has a keyboard, product functions shall be executable from a keyboard where the function itself or the result of performing a function can be discerned textually.

Unless you are developing your own software application, this requirement is probably not relevant for you. If you are developing software, make sure that there are keyboard shortcuts available for all the functions of your application and that these shortcuts are easy to find. The application should also be tab-navigable or implement some other keyboard navigation scheme. In other words, the user should be able to use and manipulate the software without using a mouse. The user should also be informed textually of the result of performing a function. For example, if he or she executes a "save changes" command with the keyboard, the resulting screen should include a textual message reading something like "document saved." This way, blind and visually impaired students using a voice application will be able to quickly verify that a given function has been performed. Other users will also benefit from such feedback.

If you are an instructor with keyboard-dependent students, make sure that the software used in your course is in compliance with this guideline.

For more info, search the NCAM (National Center for Accessible Media) website.

Policy on Accessibility

ITS periodically scans the CWRL's domain with Watchfire WebXM, an accessibility checker that automatically flags accessibility problems. It then reports problems to the CWRL.

Procedures for Instructors / Staffers
If one of your pages is flagged, the ADs will coordinate with you to bring the page up to code using the following procedure:

  1. The CWRL will forward the accessibility report to the page's author, along with information on making websites accessible. ADs will offer individualized help if necessary.
  2. After 7 days, the CWRL will then rescan the page with WebXM or WebXact.
    1. If the author has taken no action, the CWRL will issue a warning and allow 3 more days to comply.
    2. If the author has taken action but the page is still noncompliant, an AD will offer individualized help.
    3. If the page is noncompliant after the 3-day grace period, the CWRL will disable it or replace it with a text-only version until the page is made compliant.

Procedures for AD consultations
When offering accessibility assistance to staffers with non-complaint pages, the ADs will:

  1. Set up a one-hour session with the staffer to work on accessibility together. This session is to take place within a week of the non-compliance report.
  2. Ensure that by the end of the help session, all accessibility issues have been successfully corrected. If that cannot be accomplished within one session, a follow-up session will be arranged.
  3. If non-compliance issues are so drastic as to require more than two help sessions, ADs will encourage the staffer to adopt one of the CWRL templates and will use the help session to assist in implementing it.
All help sessions will be conducted during ADs office hours or by appointment.

Resources for Accessibility

Moving beyond specific guidelines for accessibility in the CWRL, this page provides links to discussions and information relevant to the practice and theory of accessibility across academic disciplines and in the public sphere. These links have been organized and annotated to aid teachers and researchers in their search. Also included is an RSS feed for recent issues and developments in accessibility.

Places to Start

  • Dive into Accessibility is a great primer about the why and how of accessibility. It is a free online book that is short, easy to read and very intuitive. This is a great resource to both learn about and teach accessibility.
  • Knowbility is a non-profit organization that advocates the independence of children and adults with disabilities by promoting the use and improving the availability of accessible information technology. It grew from the community collaboration that produced the first Accessibility Internet Rally here in Austin. Its major contributors include Dr. John Slatin and Sharron Rush. This is a great site to learn about Accessibility advocacy in the U.S. and get a sense of what is at stake.
  • Usability is the official government site of U.S. Department of Health and Human Services for “designing usable, useful and accessible Web sites and user interfaces.” The site offers guidelines, methods for design, and a basic overview of usability and its importance.

Web Accessibility Guidelines and Design

General Media Accessibility Guidelines and Resources

  • The CPB/WGBH National Center for Accessible Media (NCAM) is a research and development facility dedicated to the issues of media and information technology for people with disabilities in their homes, schools, workplaces, and communities. Its main aims are to expand access to present and future media for people with disabilities; to explore how existing access technologies may benefit other populations; to represent its constituents in industry, policy and legislative circles; and to provide access to educational and media technologies for special needs students. This site expands the scope of discussion and provides resources to think about accessibility particularly with the explosion of multimedia content both within and without the Web

Tools for Checking Accessibility

  • Watchfire's WebXAct Website Accessibility Tool is a free, useful online service that lets you test single pages of web content for quality, accessibility, and privacy issues. A subscription is necessary to test your entire website instead of on a page by page basis.
  • ATutor's AChecker is an experimental Web service developed at the Adaptive Technology Resource Center (ATRC). It is a model system that demonstrates how Web pages may be checked for accessibility problems. The accessibility checks in this system are based upon the proposed Open Accessibility Checks, which are under development. Evaluations produced by this software are not yet considered valid - this is still an experimental service.
  • WebAIM provides a succinct section 508 check list excerpted from the Rehabilitation Act as well as a Wave Accessibility Tool that tests single pages of web content for accessibility like Watchfire’s WebXAct Website Accessibility Tool. It provides four easy methods including adding what they call a “bookmarklet” to your browser bookmarks. You would then simply go to the web page and click on the bookmark to process it through WAVE.
  • ICDRI's Cynthia Says Accessibility Tool is less comprehensive than Watchfire, ATutor, or WebAIM, but nonetheless a serviceable free online tool for checking accessibility.

Resources in Print

  • Slatin, John M, and Sharron Rush. Maximum Accessibility: Making Your Web Site More Usable for Everyone. Boston: Addison-Wesley, 2002. This is the seminal book on accessibility co-authored by our own Dr. John Slatin. It is a comprehensive resource for creating Web sites that comply with U.S. accessibility standards and conform to the World Wide Web Consortium’s Web Content Accessibility Guidelines 1.0. This book offers an overview of key issues, discusses the standards in depth, and presents practical design techniques, up-to-date technologies, and testing methods to implement these standards for maximum accessibility. In short this books shows why good design is accessible design.

Organizations

  • AccessAbility SIG. This special interest group of the Society for Technical Communication is dedicated to providing accessibility resources to technical communicators.
  • ACM SIGACCESS. The Association for Computing Machinery's Special Interest Group on Accessible Computing "promotes the interests of professionals working on research and development of computing and information technology to help persons with disabilities."
  • GAWDS. The Guild of Accessible Web Designers is "a worldwide association of professional organisations, web designers and developers working together to promote the use and preservation of accessible design standards."

Browser Plug-ins

If you are having trouble opening files or viewing multimedia content, it might be because you don't have the most current plug-ins or software. To download any plug-in you need, please follow the links below.


Adobe Acrobat Reader logo
Download Adobe Acrobat Reader


Falsh Player logo
Download Flash Player


QuickTime Player logo
Download QuickTime Player


Real Player logo
Download Real Player


HTML Cheat Sheet

HTML Cheat Sheet

Notes for using HTML in Drupal

Drupal has three editing modes, which you can set using the "Input Format" link located below each editing area. The three modes are:

  1. Filtered HTML
  2. PHP Code
  3. Full HTML

The "Filtered HTML" mode only allows you to use a strictly limited number of HTML tags, for example, "a" for links (also called anchors), "em" for emphasis (italics), and "strong" for bold. Filtered HTML mode will insert line and paragraph breaks automatically based on where you've pressed "return" while editing. The tags that this mode supports are listed in the "Input Format" box.

The "Full HTML" mode allows any and all HTML tags. However, it still inserts line breaks and paragraph breaks automatically, as in the Filtered HTML mode.

The last mode is for "PHP code." This allows full HTML, and does NOT insert line breaks automatically. It allows for the greatest amount of control over how your content is formatted. You do not actually need to know PHP code in order to use PHP mode. In fact, don't attempt to enter any actual PHP unless you have a very good idea what you're doing, since it's both powerful and comparatively difficult. By the same token, do not allow your students or anyone else access to PHP mode, because it can be abused.

Basic Text Formatting

<strong>Bold text</strong>:
Bold text

This tag is allowed in Filtered mode.

<em>Emphasis</em>
Emphasis.

This tag is allowed in Filtered Mode.

The "br" tag inserts a <br /> line break
The "br" tag inserts a
line break.

This tag does not work in Filtered mode, because it is inserted automatically when you press "enter." It can be used in Full HTML mode, but the results are hard to control because Drupal still inserts this tag in that mode, so you wind up with extra ones.

<p>This is a paragraph.</p>
<p>And so is this.</p>
<p style="text-indent: 2em;">This one is indented.</p>

This is a paragraph.

And so is this.

This one is indented.

Like <br />, this tag does not work in Filtered mode, because it is added based on carriage returns. It can be used in Full HTML mode, but the results are hard to control because Drupal still inserts this tag in that mode, so you wind up with extra ones.

Lists

Lists are automatically indented. All of the list tags can be used in Filtered mode.

<ol> <li>"ol" stands for "<b>o</b>rdered <b>l</b>ist"</li> <li>"li" stands for "list item"</li> <li>Item 3</li> </ol>
  1. "ol" stands for "ordered list"
  2. "li" stands for "list item"
  3. Item 3
<ul> <li>"ul" stands for "<b>un</b>ordered <b>l</b>ist"</li> <li>"li" stands for "list item"</li> <li>Item 3</li> </ul>
  • "ul" stands for "unordered list"
  • "li" stands for "list item"
  • Item 3

Links and Images

<a href="http://www.google.com/" title="Click to visit Google">Google</a>
Google

This tag can be used in Filtered mode. The "title" attribute is a description of the link. This is used by screen reading software for the blind. In visual browsers like Internet Explorer or Firefox, the title attribute will pop up if like a "tooltip" if you hold your mouse over the link.

<img src="http://www.cwrl.utexas.edu/files/profile-large.png" width="138" height="200" alt="A statue in profile" /> <p>Text will not wrap around this image.</p>
A statue in profile

Text will not wrap around this image. "Width" and "height" are the dimensions of the image, in pixels. "Alt" should be a textual description of the image. If the image fails to load, the alt text will be used in its place. Also, screen-reading software for the blind uses the alt text to describe the image aloud. This tag cannot be used in Filtered mode.

<img src="http://www.cwrl.utexas.edu/files/profile-left.png" width="28" height="50" alt="A statue facing right" style="float: left;" /> <p><strong>This image will float on the left.</strong> (Further text.)</p>
A statue facing right

This image will float on the left. (Cannot be used in Filtered mode.) ipse negat nocuisse tibi sua tela Cupido, Myrrha, facesque suas a crimine vindicat isto; stipite te Stygio tumidisque adflavit echidnis e tribus una soror: scelus est odisse parentem, hic amor est odio maius scelus.—undique lecti te cupiunt proceres, totoque Oriente iuventus ad thalami certamen adest: ex omnibus unum elige, Myrrha, virum, dum ne sit in omnibus unus. illa quidem sentit foedoque repugnat amori et secum "quo mente feror? quid molior?" inquit "di, precor, et pietas sacrataque iura parentum, hoc prohibete nefas scelerique resistite nostro, si tamen hoc scelus est. sed enim damnare negatur hanc Venerem pietas: coeunt animalia nullo cetera dilectu, nec habetur turpe iuvencae ferre patrem tergo, fit equo sua filia coniunx, quasque creavit init pecudes caper, ipsaque, cuius semine concepta est, ex illo concipit ales.

<img src="http://www.cwrl.utexas.edu/files/profile-right.png" width="28" height="50" alt="A statue facing left" style="float: right;" /> <p><strong>This image will float on the right.</strong> (Further text.)</p>
A statue facing left

This image will float on the right. (Cannot be used in Filtered mode.) ipse negat nocuisse tibi sua tela Cupido, Myrrha, facesque suas a crimine vindicat isto; stipite te Stygio tumidisque adflavit echidnis e tribus una soror: scelus est odisse parentem, hic amor est odio maius scelus.—undique lecti te cupiunt proceres, totoque Oriente iuventus ad thalami certamen adest: ex omnibus unum elige, Myrrha, virum, dum ne sit in omnibus unus. illa quidem sentit foedoque repugnat amori et secum "quo mente feror? quid molior?" inquit "di, precor, et pietas sacrataque iura parentum, hoc prohibete nefas scelerique resistite nostro, si tamen hoc scelus est. sed enim damnare negatur hanc Venerem pietas: coeunt animalia nullo cetera dilectu, nec habetur turpe iuvencae ferre patrem tergo, fit equo sua filia coniunx, quasque creavit init pecudes caper, ipsaque, cuius semine concepta est, ex illo concipit ales.

Tables

<table cellspacing="2" cellpadding="2" border="2"> <tr> <td>Column 1</td> <td>Column 2</td> </tr> <tr> <td>Column 1</td> <td>Column 2</td> </tr> </table>
Column 1 Column 2
Column 1 Column 2

Note: These tags cannot be used in Filtered mode. TR stands for Table Row. TD stands for Table Data. The tabs shown in this example are not necessary, they just make the code easier to read. "Cellspacing" will adjust the distance between the edges of adjacent cells. "Cellpadding" will adjust the distance between the edges of a cell and its contents. "Border" defines the width (in pixels) of the border around each cell. Setting "border" to zero will make the borders go away.

Credits

Statue image courtesy of waterlily. Original photo distributed under the Creative Commons Attribution License 2.0.

Example text in the floating image entries taken from Ovid's Metamorphoses, Book 10, lines 311 to 328.

Getting Started: Templates

If you're just beginning to design websites, we suggest starting with an accessible template. These templates are designed by CWRL staffers to be accessible, but also easy to understand and modify.

The templates range in complexity:

template_basic is your best bet if you're just starting out with web design. It's simple but attractive.

template_tables is a little more complex. It uses a table to provide a grid for structuring the page.

template_css uses Cascading Style Sheets to style and position elements. CSS is recommended for advanced users.

template_css_shtml is the most advanced template. In addition to CSS, it uses server-side calls to extract contextual information from the server.

All templates are in zipped archives. To open these, download them and double-click on the downloaded file.

Best practices for content creators

The following is a short list of a few of the most important accessibility requirements and web publishing best practices that you should keep in mind when creating new content on any CWRL site. For a more complete discussion please see the Web Accessibility Guidelines page or the CWRL's accessibility overview.

  1. Image "alt" attributes

    Missing attributes on images are the single largest source of Section 508 violations in new content. According to both the Section 508 requirements and the W3C XHTML specifications, every <img> tag must have an "alt" attribute (the "alt" is short for "alternative"). The text of this attribute should indicate the content and relevance of the image for visitors who are using screen readers.

    The alt attribute for a simple image (such as a logo) doesn't need to be more than a word or two: <img alt="SPURS logo" href="/files/spursBanner.gif" width="468" height="100" />, for example. For content-rich images like charts and graphs, the alt attribute should contain a more detailed description of the information provided by the image. Images that are purely decorative (borders, drop shadows, spacing, etc.) should contain a blank alt attribute (<img alt="" href="/files/spacer.gif" width="1" height="1" />).

  2. Image "height" and "width" attributes

    Images should also have "height" and "width" attributes (this isn't a Section 508 or W3C standards issue, but it is included in our Watchfire monitoring, and it is always best practice). These should be whole numbers, without any kind of unit ("px", "em", etc.). (Note that these HTML size attributes are different from CSS size properties, which should always include a unit, in this respect.) These attributes allow browsers to render pages more quickly, since images can be situated in the page layout before they are loaded.

    It's best to use the image's native size in these attributes. While you can use the attributes to shrink or expand the image, this often results in unappealing visual artifacts. If you have a large photograph that you want to add to a page, for example, it's better to scale the image in an editor such as Photoshop or GIMP first—this uses less bandwidth and generally looks better.

    You can find an image's height and width by right-clicking the image in your browser and choosing "Properties", or by opening the image in an editor of your choice.

  3. Clean URLs and root-relative paths for internal links

    The URL of each page in our Drupal installations has two forms:

    
    http://www.cwrl.utexas.edu/?q=node/96
    http://www.cwrl.utexas.edu/node/96
    
    
    These URLs point to the same document (the Web Accessibility Guidelines page, in this case), but the first is closely tied to the architecture of this Drupal installation, while the second is the "clean" form of the URL. It's important for several reasons that we use the clean form consistently: it reduces redundancy in our monthly Watchfire accessibility results, improves our search engine visibility, and makes the link more likely to survive any future changes in site architecture.

    HTML links come in three basic flavors: absolute links, relative links, and root-relative links. Absolute links include the "fully qualified" URL—this is the protocol ("http"), the domain name ("www.cwrl.utexas.edu"), and the location of the file on the server ("/node/96"). Absolute links are necessary when linking to pages in other domains—for example, when linking to a New York Times article from your course website, or even when linking to Viz from your course website (because viz.cwrl.utexas.edu and instructors.cwrl.utexas.edu are two separate domain names).

    It's best not to use absolute links when linking to content in the same domain (for example, when linking from one page on this site to this site's homepage). Avoiding internal absolute links minimizes the problems that will occur if the domain name is changed, for example, or if the same content is hosted at two different domain names simultaneously.

    Relative links include only the path from the current page to a page in the same domain. You can read more about them here, but they can cause problems in Drupal and should be avoided. For example, a link to "node/96" will work from the homepage, but not from other node pages. Clicking a link to "node/96" from a node page will produce circular URLs of the form "node/node/96", "node/node/node/96", etc., which Drupal tends to handle in unexpected ways.

    It's important for this reason to use root-relative paths in internal links. Root-relative paths begin at the site "root" (the first "/" after the domain name). They don't include the protocol or the domain name, but do give the full path on the server from the root. This full path should include everything after the domain name—for example, if you are adding an internal link in a post to your instructor page, the root-relative URL will include your name: "/tbrown/policy".

    When adding internal links to your pages, then, avoid the following forms:

    
    <a href="http://www.cwrl.utexas.edu/?q=node/96">
    <a href="/?q=node/96">
    <a href="node/96">
    <a href="http://www.cwrl.utexas.edu/node/96">
    
    
    All of these work, in the sense that they take the visitor to the correct document, but they should be avoided for the reasons above. The first is an absolute link that isn't of the "clean" form; the second is root-relative, but also isn't clean; the third is relative to whatever page it occurs on; and the fourth is absolute.

    Instead use URLS that are both clean and root-relative:

    
    <a href="/node/96">
    
    
    Finally, these guidelines apply for links that you are adding in the body of a post (a blog entry, book page, etc.). When adding links to Drupal menus through the administration menu interface, you should follow the directions given there, which are slightly different (links should be relative to the installation root, without the initial slash). And yes, this is confusing and inconsistent, but it's the way Drupal works.

    See Tim Berners-Lee's classic essay "Cool URIs don't change" for more information about linking and good URL design.

  4. Semantic HTML elements

    Tags such as <i> (for italics) and <b> (for bold) provide visual formatting information only: they tell the browser which font face to use, but not why to use it. This means they aren't very useful for browsers that render the page in a non-visual way.

    Instead of using <i> for italics, you can use <cite> for titles and <em> for emphasis. Both of these will be rendered in italics in visual browsers, just as if you had used <i>, but they also provide semantic information that non-visual browsers or other web agents can use.

    Semantic HTML elements are one part of a larger movement toward a world wide web populated by semantically rich content, not just human-readable, nicely formatted text documents. Using semantic elements instead of the corresponding formatting elements is especially important in the CWRL given our commitment to making our web content accessible to people with disabilities.

    There are many online guides that discuss semantic HTML elements in more detail: see 456 Berea St. for one starting point.

  5. Using HTML header elements for page sub-headers

    If you wish to divide a page into subsections with sub-headers, you should use the HTML <h*> elements, not <strong> or HTML formatting elements. <strong> is a semantic element that indicates that a range of text should be emphasized. Traditional visual browsers render this emphasis by using bold type, which superficially resembles a page sub-header. A screen reader, on the other hand, may render <strong> by increasing the volume at which the text is read, which does not accurately capture the page structure if the <strong> element is being used as a sub-header.

    The solution is to use HTML header elements (<h1>, <h2>, <h3>, etc.). In general you should use either <h2> or <h3> for your first hierarchical level of sub-headers, and increase the number by one for each additional level (sub-sub-headers, sub-sub-sub-headers, etc.).

Copyright-safe, reusable media

When designing websites, one of the hardest tasks can be finding images and other media that won't get you in trouble for copyright infringement. Here are some resources (man culled from a post at LifeHacker) for finding content that is in the public domain, reusable under Creative Commons licenses, or reusable under the GNU Free Documentation license:

Wikipedia's list of Public domain image resources. Public domain images

Creative Commons Search. Search content published under Creative Commons licenses

Wikimedia Commons. "Freely licensed photographs, diagrams, animations, music, spoken text, video clips, and media of all sorts."

ccMixter. Community music site featuring remixes licensed under Creative Commons

ccHits. Creative Commons-licensed MP3 index

LifeHacker's list of stock photos. Stock images

MorgueFile. Stock images.

Using Webspace

Getting Started

Students who know their UT EID now have 150 mb of free secure server space available to them on UT's server, Xythos. Students can now convey their papers to class without using discs or FTP programs or email attachments--they can upload their files to the server using the web interface, and download them again when they get to class.

  1. Go to http://webspace.utexas.edu/.
  2. Log in on the lefthand side of the page using your UT EID and password

You are now logged in to your webspace account. You can create folders in which to store documents, webpages, photos, etc.

These folders can be "Shared" with all webspace users or with the public by checking the box next to the folder, and then clicking "Share." If you check "Users with accounts", you will be granting access to all users of webspace, while "Public" grants access to any member of the general public with an internet connection. If you grant "write" privileges to your files, these files can be altered by anyone to whom you grant access, while "Read" will only allow people to view your files.

To Add Files to your Webspace Account

  1. First you should create a folder for your pages or site that you can designate to be shared. Only folders or files with this designation will be public--everything else in your account is secure and private unless you actively designate it for sharing. You could just put everything in your root directory (your main folder), but that will get messy if you use Webspace for other purposes.
  2. For the sake of consistency, you probably want to create a folder in Webspace with the same name (no spaces, capital letters or punctuation except underscores) as the folder which you are using to store your pages and images on your own computer. That way all your links and images will still work when you upload to the server (that is, if you have made sure you have only used relative links with just the file name and the file extension, separated by a period). You can create a new folder in Webspace by clicking on New Folder, and giving your folder a name in the box that comes up next.
  3. Now click on the box next to that new folder to select it and click on Upload. A browse box will open. Use that dialog box to find and select the pages and images on your computer you wish to upload and put them one by one in the folder up on Webspace.
  4. When you have them uploaded to the server, click on the Share icon to the right of that folder.
  5. On the next screen select "change," then change the permission for Read to "public." Don't change the others--you just want people to be able to view these files on the web, not make changes to them or delete them.
  6. Under "Choose a scope for this change," select "Apply changed settings to sub-folders and files."
  7. Now you need to figure out your address or URL. Your address will be as follows: https://webspace.utexas.edu/+ your UT EID log-in/ + name-of-the-folder/ + filename-of-page + .html (or .htm). Note that there should be a forward slash after every section of this address except the last part, which will be the file name and file extension of your webpage separated by a period (for example, index.html)
  8. If you put your page directly in your main folder (the one named with your UT EID, your address will simply be https://webspace.utexas.edu/ + your UT EID log-in/ + name-of-page + .html or .htm.)
  9. Of course if you create a sub-folder within this web folder, you will have to insert the name of that folder in the address as well, after the name of outermost folder and between forward-slashes. That way you can organize multiple sites within a folder.
  10. You can link to other kinds of files on your pages (such as movie clips, mp3s, or Word documents) by putting them in that same folder, and linking to them on your HTML page--NOT with an address, but simply with a relative link, that is, with only their file name and file extension, separated by a period. When someone visiting your site clicks on it, it will open in the appropriate program on their PC. (On Macs, a copy will start to download.)

Using Dreamweaver

Adapted from Todd Onderdonk's Dreamweaver MX for Smarties (Word document)

Dreamweaver MX is the latest version of a "wysiwyg" (what-you-see-is-what-you-get) web-authoring program that allows you to construct advanced web pages without having to know or write the underlying HTML code. Dreamweaver does the code for you and lets you see the changes immediately, just as if you were working with Word. The pictures below are from the PC version of Dreamweaver, but the instructions are applicable for Mac OSX as well.

Dreamweaver MX is also available in a 30-day trial version from Macromedia. Just go to: http://www.macromedia.com/software/dreamweaver/trial/

1. Opening Dreamweaver
In the Start Menu, select Programs->Macromedia->Macromedia Dreamweaver MX. You will see the following configuration of windows:

Dreamweaver desktop, all windows open

We will not be using any of the stacked windows on the right for this tutorial. Click the arrow tab in the middle of the border between the Design view and these windows. Your desktop should now consist only of the Design view, Insert window, and Properties window. Note: any window panel you make disappear can be made to reappear by re-selecting it from the Window menu.

Although you will be using the Design view exclusively in this tutorial, you will probably still want to see the underlying HTML code for learning purposes. Select View->Code and Design. Your desktop should now look like the following:

Design, Insert, and Properties windows

2. Saving Your Page

The last task to do before you begin designing your page is to save the page. It is very important to save your document before you add page elements such as images or links to other pages so that these will be assigned relative links, aka "document-relative" paths. Otherwise Dreamweaver will assign them file locations such as your zip disc (for example, file:///D|/main.gif) or your desktop (for example, file:///C|/user_files/main.gif ) which won't be very helpful once your site is online!

Simply put, you must do three things in order to avoid the fate of lost images and broken links:

  1. Save your pages before beginning to work on them.
  2. Save all your pages and images in the same folder (or a subfolder).
  3. Make sure all images or pages in your site are named only with a name and a file extension, such as "main.gif" or "boy_waving.jpg"

Note that these file names use underscores rather than spaces to separate words, and that it is best to only use lower case letters.

Even though there is nothing on it, save your page now by selecting Save As from the File menu in the upper left hand corner. A Save As dialog box will appear. Make sure that it is set to save your file to the folder with the title of your project (e.g. "fall03"). Now name the file. If it is to be the front or “splash” page of your site, you should name it “index,” as web browsers always look for this “index page” in any directory. This version of the tutorial assumes that you already have made a course index page, however, so name your file "syllabus.html" and hit Save.

3. Titling Your Page

Now that you have saved your page as a file, you also want to give it a name for when it is displayed in a browser. This name is the public name of your page, and will be displayed above it in a web browser. Take a second to look at any webpage right now and you will see that each one has a title bar at the very top of the browser where the name is displayed. Title your page by typing "RHE 306 Syllabus" (modifying the course name if necessary) in the Title Box directly above the Code and Design view. Since it is not a file name, spaces and capitalization are fine.

4. Setting Page Properties

To begin, you will want to set up the basic look of the page. Don’t worry, anything you choose can be easily changed at a later time by returning to “Page Properties.”

  • From the Modify menu, select Page Properties. On a PC, you may also select this by right-clicking anywhere on the page.
  • This window, depicted below, allows you to specify the background color for your page, or select an image that you have saved on your computer to for the background ; it also lets you decide what color text and links should be. Play around with some text and background colors until you find a readable, attractive combination. Don’t worry about anything displayed below the link colors.
  • Page Properties dialog box

  • If you want to use an image as a background, save your image to the same folder the page is in, return to the page properties window, hit browse, and find your image. This practice is not recommended unless your image will allow text to be easily seen. More about images later.

5. Layers, Tables, and Stylesheets

Until recently, web designers often used tables to position text or images, usually with invisible borders. Yet tables take time to load and limit where you can position your page’s elements—right-justified, left justified, or centered. To combat this limitation, Dreamweaver allows you to design your page by putting objects into layers which can be dragged anywhere you want on the page. On your command, Dreamweaver will convert your layers into a complex structure of tables for display online. This practice is in some ways a corruption of HTML markup, however, as well as the spirit of a table. The CWRL is now advocating the use of stylesheets for positioning page objects. To learn more about stylesheets, see http://www.meyerweb.com/eric/css.

Tables should be used for data organization, not for layout purposes. To that end, you will now create a table for a course syllabus.

6. Creating Tables

Before creating anything on your page, you want to make sure that the objects you insert and the information they convey will be accessible to everyone who might encounter your site, even people with disabilities. Therefore, you should activate Dreamweaver's accessibility dialog boxes. Select Edit->Preferences->Accessibility and check the first five boxes (see illustration below). Hit okay.

Accessibility options in Preferences dialog box

Create a table by slowly rolling your mouse over the icons on the insert window until you find the Insert Table icon (you can also select Table from the Insert menu). Dreamweaver will ask you to choose how many columns and rows you want, columns being the boxes or “cells” arranged side by side, and rows being the ones arranged vertically. Make a simple table of three rows and three columns. (See the illustration below.) Don’t worry about any of the other properties just yet—we will change them from the Properties Panel.

Insert Table dialog box

Dreamweaver will now pop open the Accessibility Options for Tables Dialog Box. These attributes help user's understand the structure of your table, especially those users who are visually impaired and using screenreaders. Follow the example below as closely as possible, although you may need to alter the caption to correspond to your particular course.

Accessibility Options for Tables dialog box

Now fill in the 9 cells of your table according to the summary attribute you wrote. You should look at your syllabus if you have a copy.The top row of the table has three cells. Fill them in with the column headers: date, classwork, and homework. Then fill in therow headers and data. You can modify the style of the text in the Properties panel. When you are finished filling in the table,select it. To select your table, move the cursor over the bottom border until it becomes a 4-pointed arrow and click, or click on theright border. When you select your table, the Properties Panel will change to display table properties. Your desktop should now look like the following:

Completed table and table properties panel

Now let's use this panel to format your table, though you sometimes may have to select and format individual cells as wellto get the result you want. To position the table on the page, you can push it around using the cursor (using the Enter, Space, and Backspace keys), or choose Left, Center or Right from the Align Menu. To make the borders of your table invisible, change the number in the Border box to "0." To make them thicker, choose a higher number. To color the background of your table, click on Bg Color and choose from the palette of colors that pops up. To change border colors, select from the Brdr Color palette. When you finish, click on some other part of the page to deselect your table. If you want to add additional rows and columns, without selecting the table again you should click in one of its cells and choose Modify->Table->Insert Rows or Columns.

7. Linking to Another Page

It is easy to link to another page. Click to the right of your syllabus table and press enter. Click the chain link icon in the Insert panel. A Hyperlink dialog box will pop up. Type "Homepage" in the Text field and "index.html" in the Link field, as in the example below. Hit OK. You now have a hyperlink to your course homepage.

Insert Hyperlink dialog box

8. Inserting an Image

Inserting an image is easy; too easy in fact. All you have to do is download an image from the web into your project folder, click the image icon (a picture of a tree) in the Insert panel, and select the image from the "Select Image Source" dialog box. However, this tutorial asks you to be a bit harder on yourself. You will now create a banner for your course in Macromedia Fireworks by following the "Using Fireworks MX to create kick-ass graphics!" tutorial in your orientation packet. When you have completed this tutorial and exported the banner image to your project folder, you can insert the image at the top of your pages. Whenever you insert an image, the following dialog box will pop up:

Image Tag Accessibility Attributes

Try to describe your image concisely and accurately in the Alternate Text field. If your description must become longer than 30-50 words or so, you should consider using a Long Description, which means you will have to create another file for this purpose.

9. Uploading your Files

Save all of your files and close Dreamweaver. Open Start->Programs->SSH Secure Shell->Secure File Transfer Client. Select Quick Connect. Enter the Host Name and your own User Name, as in the example below. Hit Connect.

Quick Connect dialog box

You will see a window divided in half vertically, with a local file structure on the left and a remote file structure on the right.Double click the public_html directory on the remote side and drag your project folder into it.