Sobre la propiedad "opacity" y su herencia se ha comentado bastante.
Aquí un tema que creo te ayudará.
Otra forma de lograrlo sería mediante una imagen .png para el fondo con la "trasnparencia" ya incluida en la propia imagen.
Y una tercera sería con el uso del valor de
css3 "RGBA" para el fondo:
Cita: <div>
<div style="background: rgba(0, 0, 0, 0.5); z-index: 1;"></div>
...
Cada una de las formas presenta sus particularidades según sea el navegador utilizado.
Un saludo