Goh, kom ik toevallig voorbij

w3c vond 't volgens mij zelf ook 'n beetje ingewikkeld, onderaan de spec staat 'n uitleg. Misschien maakt die wat meer duidelijk. De z-index is eigenlijk 'n onderdeel van de stack: de volgorde van weergave van onder naar boven. (Overigens maken IE 6 en in mindere mate IE 7 daar dus echt 'n potje van).
De uitleg:
http://www.w3.org/TR/CSS2/visuren.html#z-index
Daaruit:
Each stacking context consists of the following stacking levels (from back to front):
1. the background and borders of the element forming the stacking context.
2. the stacking contexts of descendants with negative stack levels.
3. a stacking level containing in-flow non-inline-level non-positioned descendants.
4. a stacking level for non-positioned floats and their contents.
5. a stacking level for in-flow inline-level non-positioned descendants.
6. a stacking level for positioned descendants with 'z-index: auto', and any descendant stacking contexts with 'z-index: 0'.
7. the stacking contexts of descendants with positive stack levels.
Eerlijk gezegd ken ik die volgorde ook niet uit m'n hoofd. Maar dat is vooral omdat 't niet hoeft. Ik vind 'm redelijk intuïtief. Bovenaan deze uitleg staat trouwens dat de z-index alleen geldig is voor een gepositioneerd element.
Wat Willem doet valt dus onder punt 7: een positieve z-index. Maar om te kunnen werken moet 't element dan ook 'n andere dan static positie hebben, anders werkt z-index gewoon niet.
In die uitleg staat trouwens nog 'n link naar 'n appendix met weer 'n (nog uitgebreidere) uitleg, grinnik. Je moet techneuten ook geen uitleg laten schrijven.
http://www.w3.org/TR/CSS2/zindex.html
Ik weet niet wanneer ik dat ooit gevonden heb, die site van w3c is nou niet echt heel erg overzichtelijk ingedeeld, vind ik. En je zoekt voor z-index ook bij z-index in de spec en niet bij 'n uitleg over stack. Hoe dan ook, die twee stukken hebben 't voor mij wel verduidelijkt. (Willem, moet je alleen lezen als je dezelfde afwijking hebt als csshunter en ik en nog wat mensen hier

)
Goed, neem nu m'n anti-mopperpillen maar weer even.
Aanvulling: ik vergeet helemaal het even in normaal Nederlands samen te vatten voor de mensen die eventueel geen Engels kennen. Alsnog.
In dat Engelse stukje tekst staan dus dingen als dat tekst moet worden weergegeven boven de achtergrond van de <p> of <div> waar hij in staat. Dat bedoelde ik met intuïtief: dat is voor 'n mens vrij logisch. Maar makers van browsers hebben dit soort duidelijke regels wel nodig.
In de nog uitgebreidere uitleg (die trouwens ook 'n officieel onderdeel van de specificatie is), staat dat nog veel gedetailleerder. Welk onderdeel van 'n tabel boven welk ander stukje wordt gezet, enz.
En eigenlijk is 't enige dat je dus echt hoeft te onthouden: 'n z-index werkt alleen maar bij 'n element dat 'n fixed, absolute of relative positie heeft. En in Internet Explorer 6 en in mindere mate 7 geeft 't allerlei problemen, omdat die zich niet aan de standaard houden.