O layout do CSS fica mais inteligente com calc()

Alex Danilo

A criação de um layout CSS legal começa com a atribuição de tamanhos para tudo o que é colocado em um aplicativo da Web. Um recurso muito solicitado sempre foi a capacidade de especificar tamanhos usando uma mistura de unidades de dimensionamento. Por exemplo, seria bom reservar 50% de uma área mais uma quantidade fixa de espaço, digamos 10 px. Você pode fazer isso agora mesmo usando a propriedade calc(). Você pode usar esse recurso em qualquer lugar em que um comprimento ou número seja usado, para posicionar coisas ou em valores de cor rgb(). Ele tem muitos usos em uma folha de estilo.

O que você pode fazer com calc()?

A propriedade calc() pode ser usada em qualquer lugar em que haja um comprimento ou número de CSS na folha de estilo.

Ele oferece dois recursos principais para tornar o layout mais flexível:

  • Misturar porcentagens e valores absolutos.
  • Misturar unidades de dimensionamento.

Como misturar porcentagens com unidades absolutas

Vamos conferir um exemplo de como misturar porcentagens com unidades absolutas. Digamos que queremos alocar 50% da área disponível menos uma quantidade fixa de pixels. Podemos escrever isso assim:

#foo {
    width: calc(50% - 100px);
}
<div id="foo">Always 100 pixels less than half the available area</div>

Se tivesse uma cor de plano de fundo verde, seria assim:

Se você encolher o tamanho principal, ele vai ficar assim:

O bom é que sempre sabemos que a borda direita do conteúdo vai estar 100 px à esquerda do meio da área de contenção. A capacidade de combinar diferentes tipos de valor permite que o aplicativo da Web processe layouts em dispositivos de tamanhos diferentes com muito mais controle do que antes.

Unidades de mistura

Outra coisa legal é a capacidade de combinar unidades com medidas diferentes para chegar a um tamanho. Por exemplo, é possível definir tamanhos relativos ao tamanho da fonte atual misturando unidades "em" e "px".

#bar {
    height: calc(10em + 3px);
}

Confira alguns exemplos de como combinar valores aqui e aqui.

Faça um teste

Com calc(), você pode usar +, -, * e / para somar, subtrair, multiplicar e dividir valores, permitindo todos os tipos de possibilidades. É possível usar calc() em qualquer lugar em que um comprimento ou número do CSS possa ser usado. Também estamos trabalhando para adicionar calc() para propriedades de ângulo e frequência em breve. A propriedade calc() para comprimentos está disponível no Chrome 19 (build do Canal de desenvolvedor) usando a propriedade -webkit-calc, no Firefox desde a versão 8 usando a propriedade -moz-calc e no Internet Explorer desde a versão 9 sem prefixo. Deixe sua opinião nos comentários abaixo.