Blog
20/04/2017

Propriedades Personalizadas CSS ou Custom Properties

Já é uma realidade. Podemos finalmente utilizar as Propriedades Personalizadas ou CSS Custom Properties!

Mas antes de mais, vamos começar com um bom <h2>, seguido de um <p> introdutório.

As CSS Custom Properties ou Propriedades Personalizadas

Ou como fazer magia numa folha de estilos CSS.

As Propriedades Personalizadas de CSS são um conceito “novo” na utilização de folhas de estilo. Em resumo, trata-se da utilização de variáveis acessíveis em todo o documento CSS e até via Javascript, de forma NATIVA.

Porquê o “novo” entre aspas? Provavelmente já conheces os pré-processadores CSS. Foram bastante populares, mas com o surgimento das Custom Properties e à medida que os browsers vão suportando esta funcionalidade, o seu desaparecimento é apenas uma questão de tempo. No final do artigo encontras uma tabela de compatibilidade entre navegadores, mas posso já adiantar que cerca de 70% dos utilizadores já têm browsers compatíveis com Propriedades Personalizadas.

 

CSS e as Propriedades Personalizadas

Para perceberes a diferença face a uma folha de estilos CSS tradicional, vejamos um exemplo de CSS sem recurso a Custom Properties e, de seguida, a “tradução” usando variáveis.

Imagina que queremos um body com uma cor de fundo específica, que depois será usada como cor do texto numa camada, e também vamos usar a cor do texto do body como fundo dessa camada.

A .capa1 terá um padding de 20px, o mesmo valor que será usado como margin-top na .capa2.


body{
     background-color:#1b1b1b;
     color:#fff;
}
.capa1{
     padding:20px;
     color:#1b1b1b;
     background-color:#fff;
}
.capa2{
     margin-top:20px;
}

Agora, vamos replicar o mesmo exemplo, mas desta vez utilizando Propriedades Personalizadas.


:root{
     --color1:#1b1b1b;
     --color2:#fff;
     --mainSpacing:20px;
}
body{
     background-color:var(--color1);
     color:var(--color2);
}
.capa1{
     padding:var(--mainSpacing);
     color:var(--color1);
     background-color:var(--color2);
}
.capa2{
     margin-top:var(--mainSpacing);
}

Através de :root declaramos as variáveis, que ficam disponíveis em todo o CSS. Usamos dois traços — para definir uma variável e o seu valor. Depois, para utilizar as variáveis, basta recorrer a var(–VARIÁVEL);.

Agora imagina o potencial disto numa folha de estilos com mais de 1000 linhas de código e a facilidade de manutenção: basta alterar um valor para que a mudança se propague por todo o CSS.

 

Um passo além

Ou dois. Porque as CSS Custom Properties permitem-nos fazer cálculos, operações condicionais e definir valores por defeito caso uma variável não esteja definida. Parece Javascript, não é? Mas tudo isto é feito diretamente no CSS.

Podemos somar, multiplicar, comparar valores e aplicar diferentes resultados consoante a condição.


.caja{
     /*Se a variável1 não estiver definida, aplica 10px*/
     margin-top:var(--variable1, 10px);

     /*Também podemos usar variáveis para definir valores por defeito*/
     padding-top:var(--variable1,var(--variable2));

    /*Podemos somar, subtrair, multiplicar e dividir (*atenção ao espaço na soma e subtração)*/
     padding-top:calc(var(--variable1) + 10px);
     height:calc(var(--variable1) - 5px);
     line-height:calc(var(--variable1) * 2);
     width:calc((var(--variable1) - 5px)/2);
     
}

Outros exemplos:


:root{
     /*Podemos criar texto para inserir num :before mais tarde*/
     --texto:"Clique para ver";
}
.caja:before{
     content:var(--text);
}
.caja2:before{
     /*Podemos acrescentar texto após a variável (por exemplo, um link para projeto)*/
     content:var(--text)' o nosso projeto completo';
}
.caja2:before{
     /*Agora usamos para um link para uma notícia*/
     content:var(--text)' a nossa notícia';
}

Exemplo condicional:


:root{
     /*Podemos aceder via Javascript*/
     --variableCond: if(x > 5) this.width = 10;
}

 

Compatibilidade entre navegadores

Como podes ver, praticamente todos os browsers suportam… Exceto o Explorer! Que surpresa, NEM QUERIA ACREDITAR! Só para recordar aqueles maravilhosos anos em que era preciso fazer malabarismos para o Explorer 6.

Felizmente, ao contrário de antigamente, agora menos de 4% dos utilizadores ainda usam o Explorer. Nada de grave.

Atualmente, 70,9% dos utilizadores já têm browsers compatíveis com Custom Properties. Um valor bastante elevado.

propriedades personalizadas ou custom properties

http://caniuse.com/#feat=css-variables

Gostou?
Inscreva-se
Artigos relacionados
começamos a trabalhar
no teu projeto?

Analisamos a sua situação atual e definimos o próximo passo.

Entre em contato agora
Nosso site usa cookies para coletar informações sobre seu dispositivo e sua atividade de navegação. Utilizamos esses dados para melhorar o site, garantir a segurança e entregar conteúdo personalizado. Você pode gerenciar suas preferências de cookies clicando aqui.
Aceitar cookies Configurar Rejeitar cookies
Informações básicas sobre cookies
Este site utiliza cookies e/ou tecnologias similares que armazenam e recuperam informações durante sua navegação. Em geral, estas tecnologias podem ter finalidades muito diversas, como, por exemplo, reconhecê-lo como utilizador, obter informações sobre os seus hábitos de navegação ou personalizar a forma como os conteúdos são apresentados. Nossos usos específicos dessas tecnologias estão descritos abaixo. Por defeito, todos os cookies estão desativados, exceto os técnicos, que são necessários para o funcionamento do site. Se desejar mais informações ou exercer os seus direitos de proteção de dados, pode consultar o nosso Política de cookies".
Aceitar cookiesConfigurar
Cookies técnicos necessários Sempre ativo
Os cookies técnicos são estritamente necessários para o funcionamento do nosso site e para a sua navegação. Estes tipos de cookies são aqueles que, por exemplo, nos permitem identificá-lo, dar-lhe acesso a determinadas partes restritas da página se necessário, ou lembrar diferentes opções ou serviços já selecionados por você, como suas preferências de privacidade. Portanto, eles estão ativados por padrão e sua autorização não é necessária. Ao configurar o seu navegador poderá bloquear ou alertar sobre a presença deste tipo de cookies, embora esse bloqueio afete o correto funcionamento das diferentes funcionalidades do nosso site.
Cookies de análisis
Las cookies de análisis son las utilizadas para llevar a cabo el análisis anónimo del comportamiento de los usuarios de la web y que permiten medir la actividad del usuario y elaborar perfiles de navegación con el fin objetivo de mejorar los sitios web.
Cookies publicitarias
Las cookies publicitarias permiten la gestión de los espacios publicitarios de la web. Además, estas cookies pueden ser de publicidad personalizada y permitir así la gestión de los espacios publicitarios de la web en base al comportamiento y hábitos de navegación de usuario, de donde se obtiene su perfil y permiten personalizar la publicidad que se muestra en el navegador del usuario u otros perfiles y redes sociales del usuario.
Confirmar preferências
Contate-nos
Forma

Conte-nos
seu projeto

Indique o contexto geral da sua organização e o escopo planejado do projeto.
A Code Barcelona, ​​​​como responsável pelo tratamento dos seus dados, procederá ao seu tratamento para responder à consulta e/ou solicitação que nos faça através deste formulário de contacto. Poderá exercer os seus direitos de acesso, retificação, eliminação, bem como outros direitos, consultando a informação detalhada adicional sobre Proteção de Dados no nosso política de Privacidade.
Title
Popupcontent
Análise da sua situação digital

Analisaremos sua situação digital atual. Entraremos em contato para entender o seu contexto e avaliar conjuntamente quais áreas analisar, e posteriormente prepararemos uma auditoria com os principais pontos e recomendações.

A Code Barcelona, ​​​​como responsável pelo tratamento dos seus dados, procederá ao seu tratamento para responder à consulta e/ou solicitação que nos faça através deste formulário de contacto. Poderá exercer os seus direitos de acesso, retificação, eliminação, bem como outros direitos, consultando a informação detalhada adicional sobre Proteção de Dados no nosso política de Privacidade.
Aceptar