No se puede evitar la herencia de opacity. No sé qué lógica extraña siguieron para hacer que eso sea así la verdad.
Si lo quieres para tener un fondo transparente, para arreglarlo, suelen emplearse tres métodos.
- Usar un PNG semitransparente y usarlo como fondo.
- Crear dos elementos que sean hermanos. El primero con la opacidad que se quiera tener, y el segundo in ella. Luego el segundo se posiciona encima del primero.
- Usar rgba() o hsla() para el un color de fondo transparente.
La última opción es la menos liosa y la que yo usaría. Soportada por todos los navegadores actuales.