Quero diminuir o brilho da imagem em CSS. Pesquisei muito, mas tudo o que tenho é como alterar a opacidade, mas isso torna a imagem mais brilhante. Alguém pode me ajudar ?
a resposta aceita funciona bem, mas há também um novo filterefeito padrão CSS do qual você vai querer estar ciente no futuro. Veja minha resposta.
Spudley de
1
@shady, você pode gentilmente revisitar esta questão para marcar uma das respostas que oferecem soluções envolvendo filtros como correta. A resposta que você marcou como correta seria a maneira de fazê-lo, digamos, em 2006.
Wes Modes
Respostas:
176
O recurso que você está procurando é filter. É capaz de fazer uma variedade de efeitos de imagem, incluindo brilho:
Observe que isso é algo que só recentemente entrou no CSS como um recurso. Ele está disponível, mas um grande número de navegadores lá fora, não vai apoiá-lo ainda, e aqueles que fazem o apoio será necessário um prefixo de fornecedor (ou seja -webkit-filter:, -moz-filter, etc).
Também é possível fazer efeitos de filtro como esse usando SVG. O suporte SVG para esses efeitos é bem estabelecido e amplamente suportado (as especificações do filtro CSS foram retiradas das especificações SVG existentes)
Observe também que isso não deve ser confundido com o proprietário filter estilo disponível nas versões antigas do IE (embora eu possa prever um problema com o conflito de namespace quando o novo estilo seu prefixo de fornecedor).
Se nada disso funcionar para você, você ainda pode usar o opacityrecurso existente , mas não da maneira que está pensando: simplesmente crie um novo elemento com uma cor escura sólida, coloque-o sobre a imagem e esmaeça usando opacity. O efeito será o escurecimento da imagem por trás.
Finalmente, você pode verificar o suporte do navegador filteraqui .
A opacidade não torna nada mais claro ou mais escuro. Ele muda a transparência do objeto. Se isso tem ou não o efeito de tornar algo mais claro ou mais escuro, dependerá da cor de fundo por trás do item do qual você está alterando a opacidade. Ao contrário do que você diz, você pode tornar algo mais escuro aumentando a opacidade se colocar sobre um fundo preto. Uma imagem 99% transparente em um fundo preto aparecerá quase preto. Portanto, não vejo por que uma div de sobreposição separada é necessária. Você pode apenas configurá-lo em um BG preto. Por exemplo: jsbin.com/isemec/1/edit
NickG
@NickG Eu disse isso assumindo um fundo branco. O que você fez é a mesma coisa que meu código, só que coloquei uma sobreposição preta semitransparente no topo da imagem e você tem um fundo preto opaco com uma imagem semitransparente no topo.
sachleen
17
Resumindo, coloque o preto atrás da imagem e diminua a opacidade. Você pode fazer isso envolvendo a imagem em um div e, em seguida, diminuindo a opacidade da imagem.
Essa política de "vamos lançar prefixos para o caso" está errada. Primeiro, se o Opera já o suportar, ele não terá -o-(o Opera usa Webkit / Blink agora), segundo, o Firefox saltou direto para o sem prefixo filter, terceiro, você tem a ordem errada, sem prefixo deve ser o último, quarto, a sintaxe do IE -ms-filteré diferente ( progid:DXImageTransform, etc), quinto, a sintaxe do Firefox é diferente e requer SVG ( veja a documentação ), sexto, é provável que os novos recursos não tenham um prefixo porque os fornecedores perceberam o quão ruim era uma ideia
Camilo Martin
5
@CamiloMartin, então você deveria ter dado uma resposta mais completa a esta pergunta, pois ainda não foi respondida completamente.
Wes Modes
-webkit-filter: brilho () / -webkit-filter: contrast () funciona. Esta é uma resposta adequada para a pergunta.
Por favor, não poste exatamente a mesma resposta para várias perguntas: ou não é um bom ajuste para todas ou as perguntas são duplicatas que devem ser sinalizadas / fechadas como tal.
Se você tem uma imagem de fundo, pode fazer o seguinte: Definir um gradiente rgba () na imagem de fundo.
.img_container {float: left;width:300px;height:300px;display: flex;justify-content: center;align-items: center;border:1px solid #fff;}.image_original {background:url(https://i.ibb.co/GkDXWYW/demo-img.jpg);}.image_brighness {background: linear-gradient(0deg, rgba(0,0,0,0.5), rgba(0,0,0,0.5)),/* the gradient on top, adjust color and opacity to your taste */url(https://i.ibb.co/GkDXWYW/demo-img.jpg);}.img_container p {color:#fff;font-size:28px;}
obrigado mas que aumentando o brilho não diminuindo !!
Shadi
Depende da cor de fundo.
apocalipse de
certo @zgnilec depende da cor de fundo ... se você colocá-lo em preto o brilho da imagem diminuirá
Shadi
isso não funciona para aumentar o brilho em mais de 100%, a opacidade só pode chegar até 1
Javis Perez
Por não ser um falante de inglês, na verdade eu queria pesquisar por "opacidade" e, de qualquer forma, propus essa resposta. Mesmo que esta resposta não responda à pergunta, é bom saber que opacityaumenta o brilho. ;)
filter
efeito padrão CSS do qual você vai querer estar ciente no futuro. Veja minha resposta.Respostas:
O recurso que você está procurando é
filter
. É capaz de fazer uma variedade de efeitos de imagem, incluindo brilho:Você pode encontrar um artigo útil sobre isso aqui: http://www.html5rocks.com/en/tutorials/filters/understanding-css/
Um outro: http://davidwalsh.name/css-filters
E o mais importante, as especificações W3C: https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html
Observe que isso é algo que só recentemente entrou no CSS como um recurso. Ele está disponível, mas um grande número de navegadores lá fora, não vai apoiá-lo ainda, e aqueles que fazem o apoio será necessário um prefixo de fornecedor (ou seja
-webkit-filter:
,-moz-filter
, etc).Também é possível fazer efeitos de filtro como esse usando SVG. O suporte SVG para esses efeitos é bem estabelecido e amplamente suportado (as especificações do filtro CSS foram retiradas das especificações SVG existentes)
Observe também que isso não deve ser confundido com o proprietário
filter
estilo disponível nas versões antigas do IE (embora eu possa prever um problema com o conflito de namespace quando o novo estilo seu prefixo de fornecedor).Se nada disso funcionar para você, você ainda pode usar o
opacity
recurso existente , mas não da maneira que está pensando: simplesmente crie um novo elemento com uma cor escura sólida, coloque-o sobre a imagem e esmaeça usandoopacity
. O efeito será o escurecimento da imagem por trás.Finalmente, você pode verificar o suporte do navegador
filter
aqui .fonte
OP quer diminuir brilho, não aumentá-lo. A opacidade torna a imagem mais clara, não mais escura.
Você pode fazer isso sobrepondo um div preto sobre a imagem e definindo a opacidade desse div.
DEMO
fonte
Resumindo, coloque o preto atrás da imagem e diminua a opacidade. Você pode fazer isso envolvendo a imagem em um div e, em seguida, diminuindo a opacidade da imagem.
Por exemplo:
Aqui está um JSFiddle.
fonte
Você pode usar:
fonte
-o-
(o Opera usa Webkit / Blink agora), segundo, o Firefox saltou direto para o sem prefixofilter
, terceiro, você tem a ordem errada, sem prefixo deve ser o último, quarto, a sintaxe do IE-ms-filter
é diferente (progid:DXImageTransform
, etc), quinto, a sintaxe do Firefox é diferente e requer SVG ( veja a documentação ), sexto, é provável que os novos recursos não tenham um prefixo porque os fornecedores perceberam o quão ruim era uma ideiaCom CSS3 podemos ajustar facilmente uma imagem. Mas lembre-se de que isso não muda a imagem. Exibe apenas a imagem ajustada.
Veja o código a seguir para mais detalhes.
Para tornar uma imagem cinza:
Para dar uma aparência sépia:
Para ajustar o brilho:
Para ajustar o contraste:
Para desfocar uma imagem:
fonte
Eu encontrei isso hoje. Isso realmente me ajudou. http://www.propra.nl/playground/css_filters/
Tudo que você precisa é adicionar isso ao seu estilo css .:
fonte
Se você tem uma imagem de fundo, pode fazer o seguinte: Definir um gradiente rgba () na imagem de fundo.
fonte
Você pode usar filtros css, abaixo e exemplo para web-kit. veja este exemplo: http://jsfiddle.net/m9sjdbx6/4/
fonte
Eu tenho essa solução legal: https://jsfiddle.net/yLcd5z0h/
fonte
tente fazer isso se precisar converter a imagem preta em branco:
fonte
Gostar
fonte
opacity
aumenta o brilho. ;)