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.