Eric Foster-Johnson

In my OPI Tech Talk on Jan 28, 2009 on the Yucky Parts of Web Development, I covered a very simple technique you can use to create mouseover effects for tabular data.

If you want to use the small interaction style mentioned in my talk, or if you just want to add some nice user interaction to your pages, you can use a simple mouse over effect.

As the user moves the mouse over table rows, each row is highlighted and the user sees special links to view the details, edit, or delete the item. (Put in the links or icons that make sense for your application.) These links are invisible until the mouse appears above the row, so it adds a neat effect.

The nice thing is that this is trivial to add.

First, define even and odd row styles for the zebra-striping:

.rowEven {
    background-color : #eeeeff;
    color: #000000;
}  

.rowOdd {
    background-color : #ffffff;
    color: #000000;
}

Next, add highlighted colors:

.highlight td.rowEven {
    background-color : #ddddaa;
    color: #000000;
}  

.highlight td.rowOdd {
    background-color : #dddd88;
    color: #000000;
}

Note the way these styles are defined means that the parent tag has a class of highlight. That is, the TR, or row, tag will get that style.

Next, you need to define a style for the TD (table cell) tags you want to remain invisible until the mouse is over the row:

td.hiddenRowEven {
    visibility: hidden;
}  

td.hiddenRowOdd {
    visibility: hidden;
}

Next, add highlight styles to make the table cells magically appear:

.highlight td.hiddenRowEven {
    visibility: visible;
    background-color : #ddddaa;
    color: #000000;
    padding: .3em .3em .6em .3em
}  

.highlight td.hiddenRowOdd {
    visibility: visible;
    background-color : #dddd88;
    color: #000000;
    padding: .3em .3em .6em .3em
}

Then, you need a small bit of JavaScript to change the styles:

function changeStyle(element, styleClass) {
    element.className = styleClass;
}

Call this function on the TR tag:

<tr onmouseover="changeStyle(this, '**highlight**');"
   onmouseout="changeStyle(this, '');">

Note this is just adding or removing the “highlight” style.

Now, flag the hidden cells with the proper style:

<td class="hiddenRowOdd" >
            <a href="link">Edit</a></td>

You can then see this in action. Move the mouse over the table rows to see the links for modifying the data.

I like this effect because it is so simple, so that it does not require a lot of work, but it looks really good on the page.

-Eric Foster-Johnson

Share this Post

Related Blog Posts

JavaScript

The Yucky Parts of Web Development: Examples

February 27th, 2009

My OPI Tech Talk, on the Yucky Parts of Web Development, is available as a Powerpoint presentation . In the talk, I spoke on how a few techniques can give you a jumpstart for the Web side of your applications. The focus was on using these techniques…

Eric Foster-Johnson
JavaScript

Testing Rich Client Web Applications

February 25th, 2009

An overview of some testing frameworks for full-featured Javascript Libraries JavaScript Testing Presentation Examples: presentation.zip musicmanager.zip Abstract: Making the move from sprinkling simple interactive Ajax controls into basic web…

Object Partners
JavaScript

Screencast: Intro to Grails with RESTful Web Services

February 16th, 2009

This presentation discusses some of the fundamental concepts of Grails and dives into an example that demonstrates how to build RESTful Web Services with Grails. Select the link below to download the full presentation. Intro to Grails with RESTful…

David Reines

About the author

Eric Foster-Johnson

Principal Consultant

Eric has decades of industry experience in designing and developing complex enterprise software, including designing and developing Grails and Java EE solutions to tough client problems. He has experience leading development teams, mentoring developers, and helping troublesome projects get back onto a success track. He has lead teams in both traditional and agile settings.