Nie da się ustawić opacity dla diva tak, by nie dotknęło to jego dzieci, czyli elementów wewnątrz.
Nie istnieje taka funkcja jak background-opacity.
Dlatego trzeba stworzyć oddzielne elementy, a przez position: absolute ustawić je tak, by na siebie nachodziły.
Oto przykład:
https://codepen.io/frostify/pen/BaNqqKW
Ustawiłem kolor na red, żeby wyrażnie widać było, że opacity nie dotyka tekstu.