Lo primero es sopesar y elegir el marcado html en función del contenido y de lo que queramos hacer con él.
Lo primero lo desconocemos, Moises no lo ha comentado. Pero me arriesgaré.
Tiene toda la pinta de poderse realizar con listas anidadas sin faltar demasiado a la semántica.
Se lo enfoco como si fuese una lista con contenido desplegable (oculto inicialmente y visible al :hover)
Código CSS:
Ver originalli > span {
position: relative;
display: block;
z-index: 1;
/*resto de propiedades*/
}
li > div {
display: none;
position: absolute;
/*resto de propiedades*/
}
li > span:hover {z-index: 5;}
li > span:hover ~ div {
z-index: 2;
/*resto de propiedades*/
}
Así se evitará enfrentarse a que los hijos tengan un z-index mejor que su ancestro, pues ya estará trabajando con hermanos.
Nota: advertir que sólo contemplo el tema del z-index, sin entrar en cuestiones de posicionamiento, medidas, etc.