Si estas usando IE (hice la prueba en el 10 y en el 9 y hay errores que debes de corregir) :active no se propaga desde el los hijos hasta el elemento padre, aun si el elemento principal es una etiqueta a (
demo), si le das clic al background verás que cambia el background, lo mismo pasa siguiendo tu ejemplo (
demo2 corregí de que un span no puede contener elementos de bloque y añadi background: linear-gradient que es el estándar que debes de usar). Desafortunadamente no se puede hacer mucho con este comportamiento a no ser de usar javascript (
demo3 golpe de remo, lo sé
)
Saludos