Eu sei que você pode escrever ...
background-color: #ff0000;
... se você quer algo que é vermelho.
E você pode escrever ...
background-color: rgba(255, 0, 0, 0.5);
... se você quiser algo vermelho e translúcido.
Existe alguma maneira concisa de escrever cores parcialmente transparentes em hexadecimal? Eu quero algo como:
background-color: #ff000088; <--- the 88 is the alpha
... ou ...
background-color: #ff0000 50%;
Estou recebendo todas as minhas cores em hexadecimal, e ter que convertê-las todas para a escala decimal de 0 a 255 é irritante.
rgb(0xff,\x80,#44)
surpreendentemente representação octal parece york um poucorgb(0100, 0200,0300)
é#4080C0
background-color: opacify(#ff0000, 0.5);
oubackground-color: transparentize(#ff0000, 0.5);
Você também pode fornecer variáveis de cores hexadecimais do Sass para essas funções do Sass.Respostas:
O CSS Color Module Level 4 provavelmente suportará a notação RGBA hexadecimal de 4 e 8 dígitos!
Há três semanas (18 de dezembro de 2014), o rascunho do editor do CSS Color Module Nível 4 foi enviado ao CSS W3C Working Group. Embora em um estado que é muito suscetível a mudança, a versão atual do documento implica que, no pouco futuro próximo CSS irá apoiar tanto a notação hexadecimal RGBA 4 e 8 dígitos.
Nota: a citação a seguir tem partes irrelevantes cortadas e a fonte pode ter sido fortemente modificada no momento em que você a leu (como mencionado acima, é um rascunho do editor e não um documento finalizado).
Se as coisas mudaram bastante, deixe um comentário para que eu possa atualizar esta resposta!
O que isso significa para o futuro das cores CSS?
Isso significa que, supondo que isso não seja completamente removido do documento do nível 4, em breve poderemos definir nossas cores RGBA (ou cores HSLA, se você é um desses caras) em formato hexadecimal nos navegadores compatíveis com o Color Sintaxe do módulo nível 4.
Exemplo
Quando poderei usar isso em meus produtos voltados para o cliente?
Todas as piadas de lado: atualmente, é apenas o início de 2015, portanto elas ainda não serão suportadas em nenhum navegador por um bom tempo - mesmo que seu produto seja projetado apenas para funcionar nos navegadores mais atualizados que você provavelmente isso não acontecerá em um navegador de produção tão cedo.
Exibir o suporte atual do navegador para a notação de cores #RRGGBBAA
No entanto, dito isso, o modo como o CSS funciona significa que podemos realmente começar a usá-los hoje! Se você realmente deseja começar a usá-los agora, contanto que adicione um retorno, qualquer navegador não compatível simplesmente ignorará as novas propriedades até que sejam consideradas válidas:
Contanto que você esteja vendo esta resposta em um navegador que suporte as propriedades
background
ecolor
em CSS, o<figure>
elemento resultante do snippet acima será muito parecido com este:Usando a versão mais recente do Chrome no Windows (v39.0.2171) para inspecionar nosso
<figure>
elemento, veremos o seguinte:O retorno hexadecimal de 6 dígitos é substituído pelos
rgba()
valores, e nossos valores hexadecimais de 8 dígitos são ignorados, pois atualmente são considerados inválidos pelo analisador de CSS do Chrome. Assim que nosso navegador suportar esses valores de 8 dígitos, eles substituirãorgba()
os valores.ATUALIZAÇÃO 2018-07-04: Firefox, Chrome e Safari agora são compatíveis com essa notação, o Edge ainda está ausente, mas provavelmente seguirá ( https://caniuse.com/#feat=css-rrggbbaa ).
fonte
/* Fall... foward? */
»Sugiro avançar. Fallback e avançar: ^ pEncontrei a resposta depois de postar o aprimoramento na pergunta. Desculpe!
MS Excel ajudou!
basta adicionar o prefixo Hex ao valor da cor hexadecimal para adicionar um alfa que tenha a opacidade equivalente como o valor%.
(em rbga, a porcentagem de opacidade é expressa como decimal, como mencionado acima)
fonte
#FF00000C
é equivalente argba(255,0,0,0.05)
?#000000
se torna#7F000000
.fonte
var rgb = '#ffabcd'; var a = '0.5'; var matches = rgb.match(/#([\da-f]{2})([\da-f]{2})([\da-f]{2})/i); var rgba = 'rgba(' + matches.slice(1).map(function(m) { return parseInt(m, 16); }).concat(a) + ')';
<div style={ { backgroundColor: `rgba(${ parseInt(color.substring(1,3),16) }, ${ parseInt(color.substring(3,5),16) }, ${ parseInt(color.substring(5,7),16) }, 0.5)` } }></div>
Veja aqui http://www.w3.org/TR/css3-color/#rgba-color
Não é possível, provavelmente porque 0xFFFFFFFF é maior que o valor máximo para números inteiros de 32 bits
fonte
#ffffff
(seis dígitos hexadecimais) é na verdade um valor de cor de 24 bits ; 0xFFFFFFFF é na verdade 2³² − 1 e pode ser representado como um número inteiro de 32 bits não assinado . Acho que a razão pela qual#ffffffff
(oito dígitos hexadecimais) não é especificada é que as cores CSS estão enraizadas no espaço de cores sRGB e que uma notação de oito dígitos hexadecimais seria ambígua com um dispositivo de exibição que suporta uma profundidade de cores de 32 bits. Lembre-se de que ainda existe o#fff
que significargb(100%, 100%, 100%)
- branco - ambos com profundidade de cor de 8 bits (256 cores) e 16 bits (65536 ou 64K cores).O Chrome 52 ou superior suporta alfa hexadecimal:
fonte
¯\_(ツ)_/¯
Use
red
,green
,blue
a se converter ao RGBA:fonte
Receio que isso não seja possível. o
rgba
formato que você conhece é o único.fonte
Se você pode usar LESS, existe uma função de desbotamento.
fonte
rgba(base-color, 0.5)
Príncipe encantado:
Somente o Internet Explorer permite a cor hexadecimal de 4 bytes no formato ARGB, onde A é o canal Alpha. Pode ser usado em filtros de gradiente, por exemplo:
Onde dir pode estar: 1 (horizontal) ou 0 (vertical) E as seqüências de cores podem ser hexadecimais (# FFAAD3) ou argb hexadecimais (# 88FFAAD3).
fonte
Em Sass, podemos escrever:
como foi sugerido na representação hexadecimal de uma cor com canal alfa?
fonte
Bem, notações de cores diferentes é o que você terá que aprender.
O Kuler oferece uma chance melhor de encontrar cores e em várias notações.
Hex não é diferente de RGB, FF = 255 e 00 = 0, mas é isso que você sabe. Então, de certa forma, você precisa visualizá-lo.
Eu uso Hex, RGBA e RGB. A menos que seja necessária a conversão em massa, fazer isso manualmente ajudará a lembrar algumas 100 cores estranhas e seus códigos.
Para conversão em massa, escreva um script como o fornecido por Alarie. Divirta-se com as cores.
fonte
por que não usar
background-color: #ff0000; opacity: 0.5; filter: alpha(opacity=50); /* in IE */
se você segmentar uma cor para um texto ou provavelmente um elemento, isso deve ser muito mais fácil.
fonte
opacity
propriedade css.