Eu posso ver nas referências CSS como definir a transparência da imagem e como definir uma imagem de plano de fundo . Mas como posso combinar esses dois para definir uma imagem de plano de fundo transparente?
Eu tenho uma imagem que eu gostaria de usar como plano de fundo, mas é muito brilhante - eu gostaria de diminuir a opacidade para cerca de 0,2. Como posso fazer isso?
#main {
background-image: url(/wp-content/uploads/2010/11/tandem.jpg);
}
opacity: ...
em todos os navegadores, é muito melhor!fonte
:before
vez de:after
e, em seguida, não preciso mexer noz-index
porque:before
acaba abaixo do conteúdo principal automaticamente. (Atualmente testado no Chrome e FF.)background-repeat: no-repeat; background-attachment: fixed; background-position: center;
dentro de #main: depois de {...} .Solução com 1 div e sem imagem transparente:
Você pode usar o recurso CSS3 de vários fundos e colocar dois fundos: um com a imagem e outro com um painel transparente sobre ele (porque acho que não há como definir diretamente a opacidade da imagem de fundo):
Você não pode usá-
rgba(255,255,255,0.5)
lo porque sozinho é aceito apenas na parte de trás; portanto, usei gradientes gerados para cada navegador neste exemplo (é por isso que é tão longo). Mas o conceito é o seguinte:http://jsfiddle.net/pBVsD/1/
fonte
Solução simples
se você precisar definir o gradiente como apenas imagem de plano de fundo :
fonte
Eu vi isso e, no CSS3, agora você pode inserir código assim. Digamos que eu queira cobrir todo o cenário, eu faria algo assim. Em seguida, com
hsla(0,0%,100%,0.70)
ou rgba, você usa um fundo branco com qualquer porcentagem de saturação ou opacidade para obter a aparência desejada.fonte
Você pode usar o CSS psuedo selector :: after para conseguir isso. Aqui está uma demonstração de trabalho.
fonte
Eu tive uma questão semelhante. Eu tinha uma imagem e queria reduzir a transparência e ter um fundo preto atrás da imagem. Em vez de reduzir a opacidade ou criar um plano de fundo preto ou qualquer div secundária, defino um gradiente linear na imagem, tudo em uma linha:
fonte
Eu usei a resposta de @Dan Eastwell e funciona muito bem. O código é semelhante ao código dele, mas com algumas adições.
fonte
Uma ótima maneira de fazer isso para uma imagem simples é fazê-lo usando apenas CSS para definir o plano de fundo do elemento HTML dessa maneira.
Se você deseja ter uma fantasia e definir sua opacidade, no IE9 + *, você pode definir uma cor de fundo transparente do corpo. Isso funciona sobrepondo o branco semitransparente para tornar a imagem mais branca e parecer mais clara. Por exemplo, o branco com 75% de opacidade (
rgba(255,255,255,.75)
) produziria o seguinte efeito.position: relative
, enquanto o corpo éposition: absolute
. Isso evita que a cor de segundo plano do corpo se comporte mais como um marcador do texto no corpo.Isso pode até ser expandido para algo comparável aos filtros CSS , mas ainda muito distinto, alterando o fundo de cor RGBA do corpo. Por exemplo,
rgba(0,255,0,.75)
criaria uma tonalidade muito verde, como você pode ver no snippet de código.rgba(0,255,0,.75)
como algo exemplificado por{red:0, green:255, blue:0, alpha:'75%'}
.* Uma tabela de compatibilidade completa pode ser encontrada em Can I Use. No entanto, observe também que você precisa clicar em "Mostrar tudo" para ver se o IE9 é compatível.
Termo aditivo
Como já respondi à pergunta, mas tenho mais a acrescentar, estou titulando este adendo à seção e acrescentando algumas informações potencialmente úteis. Portanto, para extrapolar ainda mais o conteúdo acima, você pode usar um SVG como imagem de fundo para fazer coisas incríveis. Por exemplo, você pode criar um plano de fundo da tela de carregamento com um ícone legal do site, como você pode ver no exemplo de um SVG codificado em base64 abaixo.
background-size: cover
CSS faz com que o logotipo SVG em segundo plano seja redimensionado para o tamanho do elemento HTML.fonte
No seu CSS, adicione ...
Em JavaScript, use ...
Nota: adicione prefixos de fornecedor conforme necessário, mas o Chromium deve ficar bem sem.
fonte
Bem, a única maneira CSS de fazer apenas a transparência do plano de fundo é via,
RGBa
mas como você deseja usar uma imagem, sugiro usar o Photoshop ou o Gimp para tornar a imagem transparente e usá-la como plano de fundo.fonte
opactiy: 1;
:, não apenas RGBa.background-image
estilo em um contêiner e, em seguida, definir oopacity
estilo no mesmo elemento. Isso também tornaria o texto e outros conteúdos desse elemento transparentes. Tente isso se você não acredita em mim: w3schools.com/Css/tryit.asp?filename=trycss_transparencyAcabei de adicionar position = absolute, top = 0, width = 100% no #main e defina o valor da opacidade como #background
Apliquei o plano de fundo em uma div antes da principal.
fonte
Me deparei com este post como eu tinha o mesmo problema, então eu pensei por que mexer com css, ajustando valores e pressionando atualizar quando você pode ajustar facilmente a opacidade no Photoshop? Copie a imagem, cole-a como uma nova camada e mova o controle deslizante de opacidade.
fonte
Eu tive um problema semelhante e peguei a imagem de fundo com o photoshop e criei um novo .png com a opacidade de que precisava. Problema resolvido sem se preocupar se meu CSS funcionava em todos os dispositivos e navegadores
fonte