Bordas personalizadas para tabelas

Publicado em: 28/04/2004

Finalidade

Neste tutorial vamos estudar uma técnica para colocar bordas personalizadas em tabelas. Podemos criar diversas formas ou gráficos em um editor de imagens e aplicá-las como bordas de nossas tabela.

Nota: Lembre-se que em projetos CSS é válido usar-se tabelas, desde que na sua forma mais elementar e para descrição de dados, mas você poderá incrementar seu visual com CSS de forma simples como esta que iremos estudar.

A tabela pronta

Abaixo uma tabela com duas linhas e duas colunas na qual coloquei como borda da tabela uma figurinha "smiles" em fundo cinza claro.

Para incrementar coloquei uma borda sólida azul média e um fundo azul claro em cada célula da tabela.

CÉLULA 1-1 CÉLULA 1-2
CÉLULA 2-1 CÉLULA 2-2

A borda personalizada

Crie uma figurinha para servir de borda personalizada.

No caso deste tutorial criei um smile de 15x15 pixels em uma tela de 20 x 20 pixels com fundo cinza claro.

Esta e a figura que usei: figura smile usada como fundo Para fazer o download da figurinha clique com o botão direito do mouse sobre ela e no menu de contexto escolha "Salvar figura como..."

Como funciona

A colocação da borda personalizada é possível graças ao atributo cellspacing das tabelas.

É no cellspacing da tabela que será colocada a figura como fundo, para obter o efeito.

O que é o cellspacing ?

É a distância (medida em pixel) entre uma célula e as células adjacentes de uma tabela. Este valor em pixel de cellspacing é definido dentro da tag <table>. Por exemplo: <table cellspacing=20>

Mostro abaixo três tabelas com cellspacing 0 (zero) 15px e 25px para você relembrar o que é cellspacing.

Tabela com cellspacing=0

célula 1-1 célula 1-2
célula 2-1 célula 2-2

Tabela com cellspacing=15

célula 1-1 célula 1-2
célula 2-1 célula 2-2

Tabela com cellspacing=25

célula 1-1 célula 1-2
célula 2-1 célula 2-2

Os fundos

Se você definir um fundo para a tabela ele irá preencher todo o retângulo da tabela.

Veja abaixo uma tabela com o fundo smiles:

CÉLULA 1-1 CÉLULA 1-2
CÉLULA 2-1 CÉLULA 2-2

Agora veja o que acontence se você define um fundo branco para as células, mas não retira o fundo smiles da tabela:

CÉLULA 1-1 CÉLULA 1-2
CÉLULA 2-1 CÉLULA 2-2

Agora veja o que acontence se você define um cellspacing=20 para a tabela! O cellspacing deixa a mostra o fundo da tabela (o smiles)

CÉLULA 1-1 CÉLULA 1-2
CÉLULA 2-1 CÉLULA 2-2

Legal né? Nestas tabelas acima coloquei cores diferentes da primeira tabela para facilitar a visualização .

Um toque final

Para incrementar coloquei uma borda e um fundo coloridos nas células da tabela que apresentei la no começo do tutorial.

Nota: Esta técnica de personalização de bordas de uma tabela exige que você "quebre a cuca" quando for definir o tamanho da figurinha de fundo, para compatibilizá-la com a largura do cellpadding.

Nem sempre é imediato você chegar a um resultado que dê certinho as figurinhas sem quebras (enquadradas certinhas) dentro do cellspacing. Mas com um pouco de paciência você obtém resultados bem legais. Considere também criar uma figurinha bem pequena que se repita dentro do cellspacing, por exemplo com dimensões iguais a metade do cellspacing, mas atenção para não criar uma figurinha tão pequena que seja imperceptível quando renderizada.

Votos de boas descobertas.

O código completo

A seguir o código completo de uma página com a tabela deste tutorial. Se você for usar o código (copiar-colar) para seus estudos não se esqueça de fazer o download da figurinha smiles e colocá-la no mesmo diretório da página.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
charset=iso-8859-1">
<title>Tabela com borda personalizada</title>
<style type="text/css">
<!--
.bordaum {background:#cccccc url(smile.gif);}
.bordaum td {background:#f0ffff; border:10px solid #87ceeb;}
-->
</style>
</head>
<body>
<table class="bordaum" cellspacing="20" width="260">
<tr>
<td><p>c&eacute;lula 1-1 </p>
</td>
<td><p>c&eacute;lula 1-2</p>
</td>
</tr>
<tr>
<td><p>c&eacute;lula 2-1 </p>
</td>
<td><p>c&eacute;lula2-2</p>
</td>
</tr>
</table>
</body>
</html>
topo