Propriedades de CSS relacionadas a tabelas
Este artigo explica as propriedades de CSS relacionadas a tabelas.
Você pode aprender a usar e escrever propriedades para layouts de tabelas, bordas, posições de legendas e mais.
YouTube Video
HTML para Visualização
css-table.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-table.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>Table Related CSS Properties</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Table Related Properties</h2>
20 </header>
21 <article>
22 <h3>table-layout</h3>
23 <section>
24 <header><h4>table-layout: auto</h4></header>
25 <section class="sample-view">
26 <table class="table-layout-auto">
27 <thead>
28 <tr>
29 <th>Column 1</th>
30 <th>Column 2</th>
31 <th>Column 3</th>
32 </tr>
33 </thead>
34 <tbody>
35 <tr>
36 <td>Short</td>
37 <td>Some longer content here</td>
38 <td>Content</td>
39 </tr>
40 <tr>
41 <td>Another short one</td>
42 <td>This is a much longer piece of text to demonstrate the auto layout</td>
43 <td>Short</td>
44 </tr>
45 </tbody>
46 </table>
47 </section>
48 </section>
49 <section>
50 <header><h4>table-layout: fixed</h4></header>
51 <section class="sample-view">
52 <table class="table-layout-fixed">
53 <thead>
54 <tr>
55 <th>Column 1</th>
56 <th>Column 2</th>
57 <th>Column 3</th>
58 </tr>
59 </thead>
60 <tbody>
61 <tr>
62 <td>Short</td>
63 <td>Some longer content here</td>
64 <td>Content</td>
65 </tr>
66 <tr>
67 <td>Another short one</td>
68 <td>This is a much longer piece of text to demonstrate the fixed layout</td>
69 <td>Short</td>
70 </tr>
71 </tbody>
72 </table>
73 </section>
74 </section>
75 </article>
76 <article>
77 <h3>border-collapse</h3>
78 <section>
79 <header><h4>border-collapse: separate</h4></header>
80 <section class="sample-view">
81 <table class="border-collapse-separate">
82 <thead>
83 <tr>
84 <th>Header 1</th>
85 <th>Header 2</th>
86 <th>Header 3</th>
87 </tr>
88 </thead>
89 <tbody>
90 <tr>
91 <td>Cell 1</td>
92 <td>Cell 2</td>
93 <td>Cell 3</td>
94 </tr>
95 <tr>
96 <td>Cell 4</td>
97 <td>Cell 5</td>
98 <td>Cell 6</td>
99 </tr>
100 </tbody>
101 </table>
102 </section>
103 </section>
104 <section>
105 <header><h4>border-collapse: collapse</h4></header>
106 <section class="sample-view">
107 <table class="border-collapse-collapse">
108 <thead>
109 <tr>
110 <th>Header 1</th>
111 <th>Header 2</th>
112 <th>Header 3</th>
113 </tr>
114 </thead>
115 <tbody>
116 <tr>
117 <td>Cell 1</td>
118 <td>Cell 2</td>
119 <td>Cell 3</td>
120 </tr>
121 <tr>
122 <td>Cell 4</td>
123 <td>Cell 5</td>
124 <td>Cell 6</td>
125 </tr>
126 </tbody>
127 </table>
128 </section>
129 </section>
130 </article>
131 <article>
132 <h3>border-spacing</h3>
133 <section>
134 <header><h4>border-spacing: 5px 20px</h4></header>
135 <section class="sample-view">
136 <table class="border-spacing-example">
137 <thead>
138 <tr>
139 <th>Header 1</th>
140 <th>Header 2</th>
141 <th>Header 3</th>
142 </tr>
143 </thead>
144 <tbody>
145 <tr>
146 <td>Cell 1</td>
147 <td>Cell 2</td>
148 <td>Cell 3</td>
149 </tr>
150 <tr>
151 <td>Cell 4</td>
152 <td>Cell 5</td>
153 <td>Cell 6</td>
154 </tr>
155 </tbody>
156 </table>
157 </section>
158 </section>
159 </article>
160 <article>
161 <h3>caption-side</h3>
162 <section>
163 <header><h4>caption-side: top</h4></header>
164 <section class="sample-view">
165 <table>
166 <caption class="caption-side-top">
167 Table Caption on Top
168 </caption>
169 <thead>
170 <tr>
171 <th>Header 1</th>
172 <th>Header 2</th>
173 <th>Header 3</th>
174 </tr>
175 </thead>
176 <tbody>
177 <tr>
178 <td>Data 1</td>
179 <td>Data 2</td>
180 <td>Data 3</td>
181 </tr>
182 <tr>
183 <td>Data 4</td>
184 <td>Data 5</td>
185 <td>Data 6</td>
186 </tr>
187 </tbody>
188 </table>
189 </section>
190 </section>
191 <section>
192 <header><h4>caption-side: bottom</h4></header>
193 <section class="sample-view">
194 <table>
195 <caption class="caption-side-bottom">
196 Table Caption on Bottom
197 </caption>
198 <thead>
199 <tr>
200 <th>Header 1</th>
201 <th>Header 2</th>
202 <th>Header 3</th>
203 </tr>
204 </thead>
205 <tbody>
206 <tr>
207 <td>Data 1</td>
208 <td>Data 2</td>
209 <td>Data 3</td>
210 </tr>
211 <tr>
212 <td>Data 4</td>
213 <td>Data 5</td>
214 <td>Data 6</td>
215 </tr>
216 </tbody>
217 </table>
218 </section>
219 </section>
220 </article>
221 <article>
222 <h3>empty-cells</h3>
223 <section>
224 <header><h4>empty-cells: show</h4></header>
225 <section class="sample-view">
226 <table class="empty-cells-show">
227 <tr>
228 <th>Header 1</th>
229 <th>Header 2</th>
230 <th>Header 3</th>
231 </tr>
232 <tr>
233 <td>Data 1</td>
234 <td></td> <!-- Empty cell -->
235 <td>Data 3</td>
236 </tr>
237 <tr>
238 <td>Data 4</td>
239 <td></td> <!-- Empty cell -->
240 <td>Data 6</td>
241 </tr>
242 </table>
243 </section>
244 </section>
245 <section>
246 <header><h4>empty-cells: hide</h4></header>
247 <section class="sample-view">
248 <table class="empty-cells-hide">
249 <tr>
250 <th>Header 1</th>
251 <th>Header 2</th>
252 <th>Header 3</th>
253 </tr>
254 <tr>
255 <td>Data 1</td>
256 <td></td> <!-- Empty cell -->
257 <td>Data 3</td>
258 </tr>
259 <tr>
260 <td>Data 4</td>
261 <td></td> <!-- Empty cell -->
262 <td>Data 6</td>
263 </tr>
264 </table>
265 </section>
266 </section>
267 </article>
268 </main>
269</body>
270</html>
Layout de tabela
Propriedade table-layout
1table {
2 width: 100%;
3}
4
5th, td {
6 border: 1px solid black;
7 padding: 10px;
8}
9
10table.table-layout-auto {
11 border-collapse: collapse;
12 table-layout: auto;
13}
14
15table.table-layout-fixed {
16 border-collapse: collapse;
17 table-layout: fixed;
18}
19
20table.table-layout-fixed th {
21 width: 33.33%; /* Distribute width equally among 3 columns */
22}
table-layout
é uma propriedade de CSS que controla o método de layout de tabelas HTML. Esta propriedade permite especificar como calcular a largura das colunas de uma tabela.
-
Na classe
table-layout-auto
, as larguras das colunas são determinadas com base no conteúdo dentro de cada célula. -
As larguras das colunas variam de acordo com o conteúdo, e células com conteúdo longo alargarão a coluna.
-
A classe
table-layout-fixed
usatable-layout: fixed
. -
A largura de cada coluna é definida igualmente, e a largura não muda mesmo que o conteúdo seja longo.
Valores de table-layout
1table {
2 table-layout: auto;
3}
4
5table {
6 table-layout: fixed;
7}
table-layout
possui principalmente dois valores: auto
e fixed
.
-
auto
(valor padrão):- Especificar
auto
ajusta automaticamente as larguras das colunas da tabela com base no conteúdo. - O navegador lê todo o conteúdo de cada célula e determina a largura de cada coluna com base nesse conteúdo.
- Isso pode resultar em uma renderização mais lenta de toda a tabela.
- Especificar
-
fixed
:- Especificar
fixed
significa que a largura de cada coluna é determinada pela largura das células na primeira linha ou pelo atributowidth
. - A tabela inteira é desenhada imediatamente e as larguras das colunas são determinadas sem ler todo o conteúdo.
- O desempenho melhora mesmo quando há muitos dados na tabela.
- Especificar
Diferença entre table-layout: auto
e table-layout: fixed
- Com
auto
, a largura da tabela se ajusta automaticamente de acordo com o conteúdo. Um layout mais dinâmico é possível, mas o desempenho pode piorar com tabelas complexas. - Com
fixed
, as larguras das colunas são fixas, mantendo um layout consistente independentemente do conteúdo da tabela. Embora o desempenho melhore, o conteúdo pode ser truncado se não couber na largura.
A propriedade border-collapse
1table.border-collapse-separate {
2 border-collapse: separate;
3 border-spacing: 10px; /* Set space between cells */
4}
5
6table.border-collapse-collapse {
7 border-collapse: collapse;
8}
border-collapse
é uma propriedade CSS que controla como as bordas entre as células da tabela são exibidas. É usada para definir como as bordas entre as células da tabela são exibidas.
-
Com
border-collapse: separate
, haverá bordas distintas e espaços entre as células. O espaçamento entre as células é ajustado com a propriedadeborder-spacing
. Neste exemplo, um espaço de 10px é definido entre cada célula. -
Com
border-collapse: collapse
, as bordas das células adjacentes são mescladas e exibidas como uma única borda. Como resultado, a tabela possui um design mais coeso.
Como neste exemplo, a propriedade border-collapse
possui principalmente dois valores: separate
e collapse
.
-
separate
(valor padrão):- Ao especificar
separate
, cada borda da célula é desenhada separadamente e há espaço entre as células. - É usada quando você deseja distinguir claramente as bordas, pois as bordas das células são exibidas separadas.
- O espaço entre as células pode ser ajustado com a propriedade
border-spacing
.
- Ao especificar
-
collapse
:- Ao especificar
collapse
, as bordas das células adjacentes são mescladas e exibidas como uma única borda. - Como as bordas se sobrepõem, toda a tabela possui uma aparência unificada.
- As linhas e colunas da tabela são exibidas de forma organizada, tornando-a adequada para um design mais simples.
- Ao especificar
A propriedade border-spacing
1table.border-spacing-example {
2 border-collapse: separate;
3
4 /* Set 5px spacing between columns and 20px spacing between rows */
5 border-spacing: 5px 20px;
6}
A propriedade border-spacing
é uma propriedade CSS para especificar o espaçamento entre células em uma tabela HTML. Ela ajuda a ajustar o espaço entre as células da tabela e a controlar a margem visual. Neste exemplo, o espaçamento das células é adicionado como 5px
horizontalmente e 20px
verticalmente.
A propriedade border-spacing
só tem efeito em tabelas onde border-collapse: separate;
é especificado. Se border-collapse: collapse;
for especificado, esta propriedade será ineficaz.
Uso
Os valores para a propriedade border-spacing
são especificados em pixels ou outras unidades de comprimento. Pode ser especificado nos dois formatos a seguir:.
- Valor único
1table {
2 border-spacing: 10px;
3}
- Ao especificar um único valor, o espaçamento entre as linhas (superior e inferior) e as colunas (esquerda e direita) é definido como o mesmo valor.
Neste exemplo, um espaçamento de 10px
é adicionado entre todas as células.
- Dois valores
1table {
2 border-spacing: 10px 20px;
3}
- Ao especificar dois valores, o primeiro define o espaçamento horizontal entre as colunas, e o segundo define o espaçamento vertical entre as linhas.
Neste exemplo, o espaçamento entre as colunas é de 10px
e o espaçamento entre as linhas é de 20px
.
A propriedade caption-side
1caption.caption-side-top {
2 caption-side: top; /* Display the caption at the top of the table */
3 font-weight: bold;
4 font-size: 1.2em;
5 margin-bottom: 10px;
6 background-color: #ccc;
7}
8
9caption.caption-side-bottom {
10 caption-side: bottom; /* Display the caption at the bottom of the table */
11 font-weight: bold;
12 font-size: 1.2em;
13 margin-top: 10px;
14 background-color: #ccc;
15}
A propriedade caption-side
é uma propriedade CSS usada para especificar onde a legenda (elemento <caption>
) de uma tabela HTML será exibida.
-
Especificar
top
exibe a legenda na parte superior da tabela.- Esta é a configuração padrão, e as legendas são frequentemente usadas como o título ou descrição da tabela.
-
Especificar
bottom
exibe a legenda na parte inferior da tabela.- Use esta configuração quando quiser colocar explicações abaixo da tabela.
Propriedade empty-cells
1table.empty-cells-show {
2 empty-cells: show; /* Display empty cells */
3}
4
5table.empty-cells-hide {
6 empty-cells: hide; /* Display empty cells */
7}
A empty-cells
é uma propriedade CSS para controlar se as células vazias em uma tabela HTML serão exibidas. Por padrão, as células vazias em uma tabela também exibem bordas, mas você pode usar esta propriedade para controlar a exibição.
- Especificar
show
exibirá também as células vazias. Esse é o comportamento padrão. - Especificar
hide
torna as células vazias invisíveis. As bordas e os fundos das células não serão desenhados.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.