Como faço para criar um plano de fundo semi transparente?


178

Preciso tornar um fundo branco 50% transparente sem afetar mais nada. Como eu faço isso?


Aqui está um link para um artigo que descreve o método para implementar a transparência usando CSS. domedia.org/oveklykken/css-transparency.php Observe que parece que o suporte a vários navegadores pode ser um problema que pode fazer com que você altere sua implementação.
Bnjmn

3
Você quer dizer como definir uma opacidade para um fundo div sem afetar os elementos aninhados?
Ben


Respostas:


317

Use rgba():

.transparent {
  background-color: rgba(255,255,255,0.5);
}

Isso fornecerá 50% de opacidade, enquanto o conteúdo da caixa continuará com 100% de opacidade.

Se você usar opacity:0.5, o conteúdo ficará esmaecido e o plano de fundo. Portanto, não o use.


3
sim, o IE suporta rgba, sua sintaxe é #ARGB e é escrita como filtro: progid: DXImageTransform.Microsoft.gradient (startColorstr = # AARRGGBBAA, endColorstr = # AARRGGBBAA); é basicamente um gradiente de uma cor estática, mas com transparência.
Tarun 27/01

Alterar background:combackground-color:
Gabrielizalo 7/19

background-colornão é mais correto que background.
Sean

@Sean É mais específico e revelador de intenção, então? Pessoalmente, prefiro usá-lo nesse caso, mas há um motivo para essa não ser uma boa preferência?
Dave Slutzkin

1
@DaveSlutzkin É uma ótima preferência e não há nada de errado com isso, mas as edições não devem ser feitas com base na preferência pessoal. Caso contrário, as perguntas continuarão oscilando entre diferentes versões à medida que as pessoas com preferências opostas as encontrarem.
Sean

12

Isso funciona, mas todos os filhos do elemento com essa classe também se tornarão transparentes, sem nenhuma maneira de impedir isso.

.css-class-name {
    opacity:0.8;
}

9

Se você deseja tornar o plano de fundo transparente cinza, pls tente:

   .transparent{
       background:rgba(1,1,1,0.5);
   }

3

Bom saber

Alguns navegadores da web têm dificuldade para renderizar texto com sombras sobre o fundo transparente. Em seguida, você pode usar uma imagem PNG 1x1 semi transparente como plano de fundo.

Nota

Lembre-se de que o IE6 não suporta arquivos PNG.


2
O IE6 suporta PNGs, mesmo transparentes: filter: progid: DXImageTransform.Microsoft.AlphaImageLoader (enabled = true, sizingMethod = scale, src = '/ filename.png');
manmal

@ manmal, mas onde você coloca sua correção do IE? Diretamente no arquivo .css do site?
Thalatta

1
@ Talatta sim, tente.
Man17

3

NÃO use um PNG semi-transparente 1x1. Dimensione o PNG até 10x10, 100x100, etc. Tudo o que faz sentido na sua página. (Eu usei um PNG de 200 x 200 e tinha apenas 0,25 kb, então não há nenhuma preocupação real com o tamanho do arquivo aqui.)

Depois de visitar este post, criei minha página da web com 3 PNGs 1x1, com transparência variável.

O Dreamweaver CS5 estava esgotado. Eu estava tendo flash backs para o DOS !!! Aparentemente, toda vez que eu tentava rolar, inserir texto, basicamente fazer qualquer coisa, a DW estava tentando recarregar as áreas semi transparentes 1x1 pixel de cada vez ... YIKES!

O suporte técnico da Adobe nem sabia qual era o problema, mas disse-me para reconstruir o arquivo (aliás, funcionava nos sistemas deles). Foi somente quando carreguei o primeiro PNG transparente no arquivo css que o documento mergulhou fundo novamente.

Em seguida, encontrei uma postagem em outro site de ajuda sobre PNGs travando o Dreamweaver. Dimensione seu PNG; não há desvantagem em fazê-lo.


13
Dimensionando um PNG apenas porque sua ferramenta é tão ruim que não suporta? Realmente ...
jurchiks

0

Embora datado, nenhuma resposta nesse segmento pode ser usada universalmente. Usar o rgba para criar máscaras de cores transparentes - isso não explica exatamente como fazer isso com imagens de fundo.

Minha solução funciona para imagens de fundo ou coloridas.

#parent {
    font-family: 'Open Sans Condensed', sans-serif;
    font-size: 19px;
    text-transform: uppercase;
    border-radius: 50%;
    margin: 20px auto;
    width: 125px;
    height: 125px;
    background-color: #476172;
    background-image: url('https://unsplash.it/200/300/?random');
    line-height: 29px;
    text-align:center;
}

#content {
    color: white;
    height: 125px !important;
    width: 125px !important;
    display: table-cell;
    border-radius: 50%;
    vertical-align: middle;
    background: rgba(0,0,0, .3);
}
<h1 id="parent"><a href="" id="content" title="content" rel="home">Example</a></h1>


0
div.main{
     width:100%;
     height:550px;
     background: url('https://images.unsplash.com/photo-1503135935062-
     b7d1f5a0690f?ixlib=rb-enter code here0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=cf4d0c234ecaecd14f51a2343cc89b6c&dpr=1&auto=format&fit=crop&w=376&h=564&q=60&cs=tinysrgb') no-repeat;
     background-position:center;
     background-size:cover 
}
 div.main>div{
     width:100px;
     height:320px;
     background:transparent;
     background-attachment:fixed;
     border-top:25px solid orange;
     border-left:120px solid orange;
     border-bottom:25px solid orange;
     border-right:10px solid orange;
     margin-left:150px 
}

insira a descrição da imagem aqui


Obrigado por este trecho de código, que pode fornecer ajuda imediata e limitada. Uma explicação adequada melhoraria bastante seu valor a longo prazo , mostrando por que essa é uma boa solução para o problema e a tornaria mais útil para futuros leitores com outras perguntas semelhantes. Por favor edite sua resposta para adicionar alguma explicação, incluindo as suposições que você fez.
iBug 31/01

-2

Tente o seguinte:

.transparent
{ 
  opacity:.50;
  -moz-opacity:.50; 
  filter:alpha(opacity=50); 
}

12
isso fará com que o conteúdo tenha 50% de opacidade também.
Tarun

Isto pode ser facilmente fixo pela css: .transparent * { opacity:1; }, a menos que, por exemplo, um elemento com a transparentclasse tem html interior
Tim Cooke
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.