O opacity
estilo afeta todo o elemento e tudo dentro dele. A resposta correta para isso é usar uma cor de fundo rgba.
O CSS é bastante simples:
.myelement {
background: rgba(200, 54, 54, 0.5);
}
... onde os três primeiros números são os valores de vermelho, verde e azul para sua cor de fundo, e o quarto é o valor do canal 'alfa', que funciona da mesma maneira que o opacity
valor.
Veja esta página para mais informações: http://css-tricks.com/rgba-browser-support/
A desvantagem é que isso não funciona no IE8 ou inferior. A página que vinculei acima também lista alguns outros navegadores nos quais não funciona, mas agora eles são todos muito antigos; todos os navegadores em uso atualmente, exceto IE6 / 7/8, funcionarão com cores rgba.
A boa notícia é que você também pode forçar o IE a funcionar com isso, usando um hack chamado CSS3Pie . CSS3Pie adiciona uma série de recursos CSS3 modernos a versões anteriores do IE, incluindo cores de fundo rgba.
Para usar CSS3Pie para fundos, você precisa adicionar uma -pie-background
declaração específica ao seu CSS, bem como o behavior
estilo PIE , para que sua folha de estilo fique assim:
.myelement {
background: rgba(200, 54, 54, 0.5);
-pie-background: rgba(200, 54, 54, 0.5);
behavior: url(PIE.htc);
}
Espero que ajude.
[EDITAR]
Pelo que vale a pena, como outros já mencionaram, você pode usar o filter
estilo do IE , com a gradient
palavra - chave. A solução CSS3Pie realmente usa essa mesma técnica nos bastidores, mas elimina a necessidade de você mexer diretamente com os filtros do IE, para que suas folhas de estilo sejam muito mais limpas. (ele também adiciona um monte de outros recursos interessantes, mas isso não é relevante para esta discussão)