Controle de tamanho de elementos HTML com CSS

image_pdfimage_print

Controlamos o tamanho de elementos HTML utilizando o width. No entanto um problema surge ao utilizar borda com border e/ou margens externas e internas com margin e padding. O motivo é simples. O width incluirá apenas o tamanho do elemento. Todos as demais propriedades apresentadas irão se somar a este tamanho.

Utilizando estas propriedade, caso se queira que um elemento ocupe metade da página mas com uma borda de 5px, não adianta fazer:

border: 5px solid red; width:50%

O tamanho final do elemento terá 10px + a metade do tamanho do pai. Certamente o comportamento desejado inicialmente tenderá a ser que o elemento tivesse metade do tamanho do pai e 10px de borda, 5px de cada lado.

Abaixo uma comparação visual utilizando borda de 10px para evidenciar a diferença no resultado final.
css_borda_width

CSS3 e o box-sizing

Por padrão, todos os elementos têm o valor box-sizing: content-box. Isto indica que o tamanho dele é definido pelo seu conteúdo. Este é o modelo que acabamos de descrever acima.
Com o uso do box-sizing: border-box, podemos trocar o modelo para que o tamanho leve em conta até a borda. O width será a soma do conteúdo com a borda e o padding.

Abaixo uma comparação visual dos efeitos desta alteração:

css_borda_width_new_model

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!