This CSS3 demo displays how useful first-child and last child are when it comes to styling menus. The source for the menu on this demo is very very basic.
<nav> <ul> <li><a href="index.php">Home</a></li> <li><a href="aboutus.php">About Us</a></li> <li><a href="staff.php">Staff</a></li> <li><a href="contact.php">Contact Us</a></li> </ul> </nav>
All well and good except what do we do if we want to style the current page?
Traditionally I would add an extra class to the current page link like class="this" but this is a grotty way of going about it. The link is semantically significatn because of the page that it goes to.
With a little php to find out what page you're already on and you can style the links that find that address in the href tag.
<?php $thispage = basename($_SERVER['REQUEST_URI']); ?> <style> nav a[href="<?php echo $thispage; ?>"] { background: transparent; border: solid black; border-width: 1px 1px 0 1px; } nav ul li:first-child a[href="<?php echo $thispage; ?>"]{ border-color: black; border-width: 1px 1px 0 0; } nav ul li:last-child a[href="<?php echo $thispage; ?>"]{ border-color: black; border-width: 1px 0 0 1px; } </style> ?>
The only problem is that you can't write php straight to an external stylesheet so those couple of lines need to be in your php file inside a style tag.