Tableless - Desenvolvimento inteligente com Padrões Web

02/05/2011
CSS

CSS 3 – O valor currentColor

O currentColor copia a cor da propriedade color e a aplica em outras propriedades de cor, como background, border e etc.

Por


O valor currentColor é muito simples de se entender e pode ser muito útil para diminuirmos o retrabalho em alguns momentos da produção. Imagine que o currentColor é uma variável cujo seu valor é definido pelo valor da propriedade color do seletor. Veja o código abaixo:

	p {
		background:red;
		padding:10px;
		font:13px verdana;
		color: green;
		border:1px solid green;
	}

Note que o valor da propriedade color é igual ao valor da cor da propriedade border.
Há uma redundância de código, que nesse caso é irrelevante, mas quando falamos de dezenas de arquivos de CSS modulados, com centenas de linhas cada, essa redundância pode incomodar a produtividade. A função do currentColor é simples: ele copia para outras propriedades do mesmo seletor o valor da propriedade color. Veja o código abaixo para entender melhor:

	p {
		background:red;
		padding:10px;
		font:13px verdana;
		color: green;
		border:1px solid currentColor;
	}

Veja que apliquei o valor currentColor onde deveria estar o valor de cor da propriedade border. Agora, toda vez que o valor da propriedade color for modificado, o currentColor aplicará o mesmo valor para a propriedade onde ela está sendo aplicada.

Isso funciona em qualquer propriedade que faça utilização de cor como background, border, etc. Obviamente não funciona para a propriedade color. O currentColor também não funciona em seletores separados, ou seja, você não consegue atrelar o valor da propriedade color ao currentColor de outro seletor.

Por Diego Eis

Diego Eis criou o Tableless para disseminar os padrões web no Brasil. Como consultor já treinou equipes de empresas como Nokia, Globo.com, Yahoo! e iG. É palestrante e empreendedor.

http://twitter.com/diegoeis/

Veja os outros posts de

  • http://twitter.com/felds Felds

    Você sabe qual é a compatibilidade desse valor entre os borwsers mais usados?

  • Deivid

    Po legal hein, não sabia disso! Vlw

  • http://emreflexao.blog.br Cláudio

    Olá Diego,

    realmente a idéia é interessante, mas ficou mal implementada (diga-se w3c).

    Se eu tenho uma cor ‘red’ e vou aplicá-la em, digamos, 5 propriedades, prefiro escreve-la em todas elas ao invés de usar currentColor,
    já que o css ficará bem menor #(red) = 3 < 12 = #(currentColor).

    Isso representa, no caso geral #FFFFFF, 5 bytes a mais por propriedade.

    []'s

  • http://www.pponto.com Paula

    Muito interessante se pensarmos na manutenção de um css. Mas não funciona no IE certo?

  • Luís Henrque

    Não sei, mas não achei prático. Não me vejo utilizando isso.

  • http://www.gdesignweb.com.br Luis Gustavo

    É Cláudio, mas no caso o intuito é definir, para outras propriedades, a mesma cor da propriedade Color, ou seja, se vc trocar a cor do elemento, estará, automaticamente trocando a cor da borda, do background e de qualquer outra propriedade que tenha o CurrrentColor, sem ter que trocar os demais.

  • http://wbruno.com.br William Bruno

    color red + background CurrentColor = conteúdo ilegível =)

    ne?! existem formas melhores de ‘modular’, ou usar ‘variaveis’ no css.

  • http://leobetosouza.com/ Leonardo Alberto Souza

    Bem interessante, mas ainda não é suportado pela maioria dos browsers.

    Como o @Claudio disse, ‘currentColor’… só aumenta o tamanho do arquivo. Não podia ser cColor pelo menos?

    @William. Não serve só pra background. Imagina isso, por exemplo:

    .box{
    color:#f00;
    background:#fff;
    border: 1px solid currentColor;/*currentColor = #f00*/
    box-shadow: 3px 2px 0 currentColor;/currentColor = #f00*/
    }

    ou melhor:

    body{
    color:#f00;
    }
    .box{
    border-color:currentColor;
    }

    No mais, eu preferia que o povo do W3C trabalhasse na implementação de variáveis e todas as coisas legais que o frameworks estilo LESS e SASS tem.

  • http://leobetosouza.com/ Leonardo Alberto Souza

    Até gostei. Tinha visto no CSS Tricks e até tive algumas ideias à respeito, mas até ser seguro usar é inútil.

    Uma exemplo legal é esse:

    #sidebar{
    background:#fff;
    color:#f00;
    border:1px solid currentColor;
    box-shadow:1px 1px 0 currentColor;
    }
    #sidebar ul > li{
    border:1px solid currentColor;
    }

    E por aí vai…

    Seria muito util também fazer operações matemáticas com as cores. Ex: currentColor = #FFFFFF; currentColor – #333333 = #CCCCCC.

    Ainda preferia que o W3C fizesse variáveis e mixins CSS no estilo LESS: http://lesscss.org/

  • Gabriel

    Muito Bom Gostei muito vai facilitar bastante

  • Guto_Gomes

    Com o exemplo dado, prefiro usar o SASS que pode ser usado com variaveis.