Example Navigation
Example 5: Highlighting focus
Best Practice Rating: Good
- Use javascripting to update styling of checkboxes label with keyboard focus.
- Include
onFocus and onBlur event handlers on input element to update class value of parent li.
- Include CSS
:hover psuedo element to highlight the active area of the label for selecting a checkbox.
Example Start
Example End
HTML Source Code
<div class="label">Select pizza toppings</div>
<ul class="checkbox">
<li><input type="checkbox" id="cb1" value="pepperoni" onfocus="parentFocus(event)" onblur="parentBlur(event)"/><label for="cb1">Pepperoni</label></li>
<li><input type="checkbox" id="cb2" value="sausage" onfocus="parentFocus(event)" onblur="parentBlur(event)"/><label for="cb2">Sausage</label></li>
<li><input type="checkbox" id="cb3" value="mushrooms" onfocus="parentFocus(event)" onblur="parentBlur(event)"/><label for="cb3">Mushrooms</label></li>
<li><input type="checkbox" id="cb4" value="onions" onfocus="parentFocus(event)" onblur="parentBlur(event)"/><label for="cb4">Onions</label></li>
<li><input type="checkbox" id="cb5" value="gpeppers" onfocus="parentFocus(event)" onblur="parentBlur(event)"/><label for="cb5">Green Peppers</label></li>
<li><input type="checkbox" id="cb6" value="xcheese" onfocus="parentFocus(event)" onblur="parentBlur(event)"/><label for="cb6>">Extra Cheese</label></li>
</ul>
Javascript Source Code
<script type="text/javascript">
//
// Add focus styling to the parent (LI) element of the radio button receiving focus
//
function parentFocus( event ) {
// Get event object if using Internet Explorer
var e = event || window.event;
// Check the object for W3C DOM event object, if not use IE event object to update the class of the parent element
if( e.target )
e.target.parentNode.className = "focus";
else
e.srcElement.parentNode.className = "focus";
}
//
// Remove focus styling from the parent (LI) element of the radio button receiving focus
//
function parentBlur( event ) {
// Get event object if using Internet Explorer
var e = event || window.event;
var node;
// Check the object for W3C DOM event object, if not use IE event object to update the class of the parent element
if( e.target )
e.target.parentNode.className = "";
else
e.srcElement.parentNode.className = "";
}
</script>
CSS Source Code
<style type="text/css">
div.label {
margin: 0;
padding: 0;
margin-left: 20px;
font-size: 100%;
font-weight: bold;
}
ul.checkbox {
margin: 0;
padding: 0;
margin-left: 20px;
list-style: none;
}
ul.checkbox li input {
margin-right: .25em;
}
ul.checkbox li {
border: 1px transparent solid;
}
ul.checkbox li:hover,
ul.checkbox li.focus {
background-color: lightyellow;
border: 1px gray solid;
width: 10em;
}
</style>